Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

Таблица значений

MaxTi
читатель
офлайн
Дата регистрации: 10.02.2010
Сообщений: 52
Пост №1
 
03.03.2010 13:08

Помогите с работой таблиц значений<br>есть 2-е таблицы значений с колонками Номенклатура и Количество(число), как вычесть Количество одной таблицы из другой в цикле, чтобы строчка вычитания искалась по номенклатуре?<br>зы. Комплексная 77

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №2
 
03.03.2010 14:08

"Самый простой вариант:<br>Для Стр1 = 1 По Т1.Количество() Цикл<br> Стр2 = 0;<br> Если Т2.НайтиЗначение (Т1.ПолучитьЗначение (Стр1, "Номенклатура"), Стр2, "Номенклатура") = 0 Тогда<br> Продолжить;<br> КонецЕсли;<br> Т2.УстановитьЗначение (Т2.ПолучитьЗначение (Стр2, "Количество") - Т1.ПолучитьЗначение (Стр1, "Количество"));<br>КонецЦикла;<br><br>Сложнее, но и быстрее если отсортировать таблицы и обойтись без Поиска значения."

gucci76
читатель
офлайн
Дата регистрации: 16.03.2008
Сообщений: 364
Пост №3
 
03.03.2010 14:12

"Надо было одну таблицу делать. А потом Таб.Свернуть("Номеклатура",",");"

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №4
 
03.03.2010 14:13

Тоже верно. Что-то я стормозил.

MaxTi
читатель
офлайн
Дата регистрации: 10.02.2010
Сообщений: 52
Пост №5
 
03.03.2010 14:21

"задача такая, есть непроведенные накладные нужно выбрать из них товар с количеством вычесть из него то что есть на данный момент на складе и запихнуть в приход.<br>я хочу сделать таб значений товара из накладных и таб значений из регистра остатки, вычесть из таб значений накладных таблицу значений регистра остатков...так корректно будет?<br>код начала:<br> ТаблицаНоменклатуры.ВыбратьСтроки();<br> Пока ТаблицаНоменклатуры.ПолучитьСтроку()=1 Цикл<br> Рег=СоздатьОбъект("Регистр.ОстаткиТМЦ");<br> Рег.ВыбратьИтоги();                   <br> Ном=0;<br> Пока Рег.ПолучитьИтог()=1 Цикл<br>                   Тут нужно сравнить по номенклатуре(???)и<br>                   ТаблицаНоменклатуры.Количество = ТаблицаНоменклатуры.Количество-Рег.Количество<br><br>вот с сравнением у меня загвоздка<br>ТаблицаНоменклатуры - это созданная таблица из накладных с колонками Номенклатура и Количество"

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №6
 
03.03.2010 14:35

Ну да. Если вы к таблице Накладной добавите строки из таблицы остатков, только количеству приписав минус, тогда свернув таблицу останется пробежать по ней и выбрать строки со значением > 0

MaxTi
читатель
офлайн
Дата регистрации: 10.02.2010
Сообщений: 52
Пост №7
 
03.03.2010 14:42

т.е. если я делаю цикл выборки из регистра остатки в цикле выборки строк таблицы, то по умолчанию выборка идет по одинаковой номенклатуре? остается только удалить строки с количество<0, так наверно проще будет

MaxTi
читатель
офлайн
Дата регистрации: 10.02.2010
Сообщений: 52
Пост №8
 
03.03.2010 15:55

"Вот что получилось...тока работает некорректно, подскажите где ошибка...количество неправильное выводит в итоге<br>Процедура Сформировать()<br><br> Номенклатура = СоздатьОбъект("Справочник.Номенклатура"); <br> ТаблицаНоменклатуры = СоздатьОбъект("ТаблицаЗначений");<br> ТаблицаНоменклатуры.НоваяКолонка("Номенклатура","Справочник.Номенклатура",,,,,,);<br> ТаблицаНоменклатуры.НоваяКолонка("Количество","Число",,,,,,);<br> ТаблицаНоменклатуры.НоваяКолонка("Цена","Число",,,,,,);<br> ДокР=СоздатьОбъект("Документ.Реализация"); <br> ДокР.ВыбратьДокументы(ДатаНачала, ДатаКонца); <br> Пока ДокР.ПолучитьДокумент()=1 Цикл<br> Если (ДокР.Проведен()=0) и (ДокР.ПометкаУдаления()=0) Тогда<br><br> ДокР.ВыбратьСтроки();<br> Пока ДокР.ПолучитьСтроку() = 1 Цикл<br> ТаблицаНоменклатуры.НоваяСтрока(); <br> ТаблицаНоменклатуры.Номенклатура = ДокР.Номенклатура;<br> ТаблицаНоменклатуры.Количество = ДокР.Количество; <br> ТаблицаНоменклатуры.Цена = ДокР.Цена;<br> Сообщить("Перебор реализаций " + СокрЛП(ДокР) + ТаблицаНоменклатуры.Номенклатура);<br> КонецЦикла;<br> КонецЕсли;<br> КонецЦикла;<br> ТаблицаНоменклатуры.Свернуть("Номенклатура", "Количество, Цена"); <br> ТаблицаНоменклатуры.ВыбратьСтроки();<br> Пока ТаблицаНоменклатуры.ПолучитьСтроку()=1 Цикл<br> Рег=СоздатьОбъект("Регистр.ОстаткиТМЦ");<br> Рег.ВыбратьИтоги();                   <br> Ном=0;<br> Пока Рег.ПолучитьИтог()=1 Цикл<br> ТаблицаНоменклатуры.Количество = ТаблицаНоменклатуры.Количество-Рег.Количество;<br> Если ТаблицаНоменклатуры.Количество<=0 Тогда<br> ТаблицаНоменклатуры.УдалитьСтроку();<br> КонецЕсли;<br> КонецЦикла;<br> КонецЦикла;<br><br><br><br> ДокВ=СоздатьОбъект("Документ.ПоступлениеТМЦ");                                                                              <br> Контрагенты = СоздатьОбъект("Справочник.Контрагенты");<br><br> ТочкаНачала = ДатаНачала; <br> ТочкаКонца = ДатаКонца;<br> <br><br><br> ДокВ.Новый();<br> ДокВ.ДатаДок = ДатаНачала; <br> <br> ТаблицаНоменклатуры.ВыбратьСтроки(); <br> Пока ТаблицаНоменклатуры.ПолучитьСтроку() = 1 Цикл<br> ДокВ.НоваяСтрока(); <br> ДокВ.Номенклатура = ТаблицаНоменклатуры.Номенклатура;<br> ДокВ.Количество = ТаблицаНоменклатуры.Количество;<br> ДокВ.Цена = ТаблицаНоменклатуры.Цена; <br> ДокВ.Сумма = ДокВ.Количество * ДокВ.Цена; <br> КонецЦикла;       <br> ДокВ.Записать();<br> Сообщить("Записан новый документ "+ДокВ.Вид()+", №: "+ДокВ.НомерДок+" от "+ДокВ.ДатаДок);<br>КонецПроцедуры<br>"

BelikovS
читатель
офлайн
Дата регистрации: 05.03.2007
Сообщений: 1701
Пост №9
 
03.03.2010 17:35

"Я оставил только часть для сокращения, закомментированое - это типа удалить. Остальное писал навскидку (возможны ошибки :) )<br>> ....<br>> //ТаблицаНоменклатуры.Свернуть("Номенклатура", "Количество, Цена"); <br>> //ТаблицаНоменклатуры.ВыбратьСтроки();<br>> //Пока ТаблицаНоменклатуры.ПолучитьСтроку()=1 Цикл<br>> Рег=СоздатьОбъект("Регистр.ОстаткиТМЦ");<br>> Рег.ВыбратьИтоги();                   <br>> // Ном=0;<br>> Пока Рег.ПолучитьИтог()=1 Цикл<br>> // ТаблицаНоменклатуры.Количество = ТаблицаНоменклатуры.Количество-Рег.Количество;<br>> // Если ТаблицаНоменклатуры.Количество<=0 Тогда<br>> // ТаблицаНоменклатуры.УдалитьСтроку();<br>> // КонецЕсли;<br> ТаблицаНоменклатуры.НоваяСтрока();<br> ТаблицаНоменклатуры.Номенклатура = Рег.Номенклатура;<br> ТаблицаНоменклатуры.Количество = -Рег.Количество;<br> ТаблицаНоменклатуры.Цена = 0;<br>> КонецЦикла;<br> ТаблицаНоменклатуры.Свернуть("Номенклатура", "Количество, Цена"); <br>> //КонецЦикла;<br>> <br>> <br>> <br>>ДокВ=СоздатьОбъект("Документ.ПоступлениеТМЦ");                                                                         > Контрагенты = СоздатьОбъект("Справочник.Контрагенты");<br>> ....<br>> ТаблицаНоменклатуры.ВыбратьСтроки(); <br>> Пока ТаблицаНоменклатуры.ПолучитьСтроку() = 1 Цикл<br> Если ТаблицаНоменклатуры.Количество <= 0 Тогда Продолжить; КонецЕсли;<br>> ДокВ.НоваяСтрока(); <br>> ДокВ.Номенклатура = ТаблицаНоменклатуры.Номенклатура;<br>> ДокВ.Количество = ТаблицаНоменклатуры.Количество;<br>> ДокВ.Цена = ТаблицаНоменклатуры.Цена; <br>> ДокВ.Сумма = ДокВ.Количество * ДокВ.Цена; <br>> КонецЦикла;<br> Если ДокВ.Количество() > 0 Тогда<br>> ДокВ.Записать();<br>> Сообщить("Записан новый документ "+ДокВ.Вид()+", №: "+ДокВ.НомерДок+" от "+ДокВ.ДатаДок);<br> КонецЕсли;<br>> КонецПроцедуры<br>> <br><br>При этом стоит учесть:<br> Если в документе у вас несколько строк с одной номенклатурой, то свертка увеличит Цену, что в общем-то не верно. А если учесть, что вы их собираете из разных документов - вероятность такого случая достаточна хорошая. Вывод - Собирать 2 таблицы одна с количеством, другая с ценой. В случае разных цен, можно будет усреднить или еще как-то обработать.<br><br>"

zak555 (398843952)
читатель
офлайн
Дата регистрации: 27.03.2008
Сообщений: 4656
Пост №10
 
03.03.2010 19:43

кто цену суммирует *?

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация