Бухгалтерский учет, налогообложение, отчетность, МСФО, анализ бухгалтерской информации, 1С:Бухгалтерия

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

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

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

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

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

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

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

Сложнее, но и быстрее если отсортировать таблицы и обойтись без Поиска значения."

gucci76
читатель
офлайн
Дата регистрации: 16.03.2008
Сообщений: 363
Пост №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

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

вот с сравнением у меня загвоздка
ТаблицаНоменклатуры - это созданная таблица из накладных с колонками Номенклатура и Количество"

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

"Вот что получилось...тока работает некорректно, подскажите где ошибка...количество неправильное выводит в итоге
Процедура Сформировать()

Номенклатура = СоздатьОбъект("Справочник.Номенклатура");
ТаблицаНоменклатуры = СоздатьОбъект("ТаблицаЗначений");
ТаблицаНоменклатуры.НоваяКолонка("Номенклатура","Справочник.Номенклатура",,,,,,);
ТаблицаНоменклатуры.НоваяКолонка("Количество","Число",,,,,,);
ТаблицаНоменклатуры.НоваяКолонка("Цена","Число",,,,,,);
ДокР=СоздатьОбъект("Документ.Реализация");
ДокР.ВыбратьДокументы(ДатаНачала, ДатаКонца);
Пока ДокР.ПолучитьДокумент()=1 Цикл
Если (ДокР.Проведен()=0) и (ДокР.ПометкаУдаления()=0) Тогда

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



ДокВ=СоздатьОбъект("Документ.ПоступлениеТМЦ");                                                                              
Контрагенты = СоздатьОбъект("Справочник.Контрагенты");

ТочкаНачала = ДатаНачала;
ТочкаКонца = ДатаКонца;



ДокВ.Новый();
ДокВ.ДатаДок = ДатаНачала;

ТаблицаНоменклатуры.ВыбратьСтроки();
Пока ТаблицаНоменклатуры.ПолучитьСтроку() = 1 Цикл
ДокВ.НоваяСтрока();
ДокВ.Номенклатура = ТаблицаНоменклатуры.Номенклатура;
ДокВ.Количество = ТаблицаНоменклатуры.Количество;
ДокВ.Цена = ТаблицаНоменклатуры.Цена;
ДокВ.Сумма = ДокВ.Количество * ДокВ.Цена;
КонецЦикла;      
ДокВ.Записать();
Сообщить("Записан новый документ "+ДокВ.Вид()+", №: "+ДокВ.НомерДок+" от "+ДокВ.ДатаДок);
КонецПроцедуры
"

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

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

При этом стоит учесть:
Если в документе у вас несколько строк с одной номенклатурой, то свертка увеличит Цену, что в общем-то не верно. А если учесть, что вы их собираете из разных документов - вероятность такого случая достаточна хорошая. Вывод - Собирать 2 таблицы одна с количеством, другая с ценой. В случае разных цен, можно будет усреднить или еще как-то обработать.

"

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

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

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

Читают тему:

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

1С бесплатно 1С-Отчетность 1С:ERP Управление предприятием 1С:Бесплатно 1С:Бухгалтерия 8 1С:Бухгалтерия 8 КОРП 1С:Бухгалтерия автономного учреждения 1С:Бухгалтерия государственного учреждения 1С:Бюджет муниципального образования 1С:Бюджет поселения 1С:Вещевое довольствие 1С:Деньги 1С:Документооборот 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 1С:Зарплата и управление персоналом 1С:Зарплата и управление персоналом КОРП 1С:Комплексная автоматизация 8 1С:Лекторий 1С:Предприятие 1С:Предприятие 7.7 1С:Предприятие 8 1С:Розница 1С:Управление нашей фирмой 1С:Управление производственным предприятием 1С:Управление торговлей 1СПредприятие 8

Все теги