Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
13 Ноя 2018, 03:03
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Работа с таблицей значений  (Прочитано 3931 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TamKar

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-07-28
  • Сайт: 
Кто сможет помочь. Результат запроса я вношу в таблицу значений, потом там сортирую и списываю товар, но движение по расходу не записывается в регистре сведений Товары на Склдае. Выкладываю код. Процедура ОбработкаПроведения(Отказ, Режим)
   
   
      МетодСписания = РегистрыСведений.ПорядокСписания.ПолучитьПоследнее(МоментВремени()).Значения;
      
      Если МетодСписания = Перечисления.Порядок.FIFO Тогда
         ПорядокСписания = "ВОЗР";
      Иначе
         ПорядокСписания = "УБЫВ";
      КонецЕсли;
      
      Запрос = Новый Запрос;
      Запрос.Текст = "ВЫБРАТЬ
                     |   расходнаяНакладнаяТовары.Номенклатура,
                     |   СУММА(расходнаяНакладнаяТовары.Количество) КАК Количество
                     |ПОМЕСТИТЬ ДокТЧ
                     |ИЗ
                     |   Документ.РасходнаяНакладная.Товары КАК расходнаяНакладнаяТовары
                     |ГДЕ
                     |   расходнаяНакладнаяТовары.Ссылка = &ссылка
                     |
                     |СГРУППИРОВАТЬ ПО
                     |   расходнаяНакладнаяТовары.Номенклатура
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     |   ДокТЧ.Номенклатура,
                     |   ДокТЧ.Количество,
                     |   ТоварыНаСкладеОстатки.Партия.Ссылка КАК ПартияСсылка,
                     |   ЕСТЬNULL(ТоварыНаСкладеОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                     |   ЕСТЬNULL(ТоварыНаСкладеОстатки.СуммаОстаток, 0) КАК СуммаОстаток
                     |ИЗ
                     |   ДокТЧ КАК ДокТЧ
                     |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(
                     |            &МоментВремени,
                     |            Номенклатура В
                     |               (ВЫБРАТЬ
                     |                  ДокТЧ.Номенклатура
                     |               ИЗ
                     |                  ДокТЧ КАК ДокТЧ)) КАК ТоварыНаСкладеОстатки
                     |      ПО ДокТЧ.Номенклатура = ТоварыНаСкладеОстатки.Номенклатура
                     |
                     |УПОРЯДОЧИТЬ ПО
                     |   ТоварыНаСкладеОстатки.Партия.МоментВремени,
                     |   ПартияСсылка";
      
      Запрос.УстановитьПараметр("Ссылка", Ссылка);
      Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
      Результат = Запрос.Выполнить();
      
      ТаблицаПроведения = Движения.ТоварыНаСкладе.ВыгрузитьКолонки();
      
      ВыборкаИтоги = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      
      Пока ВыборкаИтоги.Следующий() Цикл
         Если ВыборкаИтоги.Количество > ВыборкаИтоги.КоличествоОстаток Тогда
            Сообщить("Не хватает номенклатуры " + ВыборкаИтоги.Номенклатура + ", из необходимых "
            + ВыборкаИтоги.Количество + " в наличии есть " + ВыборкаИтоги.КоличествоОстаток);
            Отказ = Истина;
         КонецЕсли;
         
         Если Отказ Тогда
            Продолжить;
         КонецЕсли;
         НужноСписать = ВыборкаИтоги.Количество;
         
         
         
         Выборка = ВыборкаИтоги.Выбрать();
         Пока Выборка.Следующий() И НужноСписать > 0 Цикл
            СписатьСПартии = Мин(НужноСписать, Выборка.КоличествоОстаток);
            Стр = ТаблицаПроведения.Добавить();
            ЗаполнитьЗначенияСвойств(Стр,Выборка,,"Количество");
            Стр.Количество = СписатьСПартии;
            Стр.Сумма = СписатьСПартии / Выборка.КоличествоОстаток * Выборка.СуммаОстаток;
            НужноСписать = НужноСписать - СписатьСПартии;
         КонецЦикла;
      КонецЦикла;
      
      Если Не Отказ Тогда
         Движения.ТоварыНаСкладе.Записывать = Истина;
         ТаблицаПроведения.ЗаполнитьЗначения(Дата, "Период");
         
         ТаблицаПроведения.ЗаполнитьЗначения(ВидДвиженияНакопления.Расход, "ВидДвижения");
         ТаблицаПроведения.ЗаполнитьЗначения(Ссылка, "Регистратор");
         ТаблицаПроведения.ЗаполнитьЗначения(Истина, "Активность");
         
         ТоварыНаСкладе = РегистрыНакопления.ТоварыНаСкладе.СоздатьНаборЗаписей();
         ТоварыНаСкладе.Отбор.Регистратор.Установить(Ссылка);
         ТоварыНаСкладе.Прочитать();
         ТоварыНаСкладе.Загрузить(ТаблицаПроведения);
         ТоварыНаСкладе.Записать();    
         
      КонецЕсли;
      
      ТаблицаПроведения = Товары.Выгрузить();
      ТаблицаПроведения.Свернуть("Номенклатура", "Количество, Сумма");
      ТаблицаПроведения.Колонки.Добавить("Период");
      ТаблицаПроведения.ЗаполнитьЗначения(Дата, "Период");
      ТаблицаПроведения.Колонки.Добавить("Регистратор");
      ТаблицаПроведения.ЗаполнитьЗначения(Ссылка, "Регистратор");
      ТаблицаПроведения.Колонки.Добавить("Активность");
      ТаблицаПроведения.ЗаполнитьЗначения(Истина, "Активность");

        Продажи = РегистрыНакопления.Продажи.СоздатьНаборЗаписей();
      Продажи.Отбор.Регистратор.Установить(Ссылка);
      Продажи.Прочитать();
      Продажи.Загрузить(ТаблицаПроведения);
      Продажи.Записать();
   

   КонецПроцедуры

Подскижете что не правильно делаю


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1101
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Так на первый взгляд не берусь судить насколько алгоритм правильный...

Просто вопрос: зачем вам все эти "Выгрузитьколонку()", "СоздатьНаборЗаписей" и т.п.?

Чем вам не нравится стандартнейшее

Движение = Движения.ТоварыНаСкладе.Добавить();
Движение = ВидДвиженияНакопления.Расход;
и т.д...

Поля регистра Регистратор и Активность явно устанавливать не надо - они сами заполнятся...
Если конечно идти через Движения...

Даже если вы и добьетесь что записи в регистр попадут.
Но мне кажется что операция ОТМЕНЫ проведения не сработает.
Процедуру ОбработкаОтменыПроведения тоже придется писать в ручную...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн progmikon

  • *****
  • Сообщений: 2090
  • РЕПУТАЦИЯ: 371
  • КПД: 18%
  • Регистрация: 2010-10-09
  • Компания: http://progmikon.blogspot.com/
  • Профессия: Программист 1С
Полностью согласен с cska-fanat-kz(за что ему +1). У вас оптимальный запрос с точки зрения получения остатков, а вот движения....Делайте через "Движения". Код сократиться раза в два. + к тому, мне кажется можно и в одной выборке в оба регистра писать.


Теги:
 

Обнаружено дублирование ключевых значений в колонке ссылка ["обнаружено дублирование ключевых з

Автор lianinfoРаздел Пользователям "1С - Предприятие 8"

Ответов: 10
Просмотров: 1450
Последний ответ 20 Мар 2018, 16:54
от alex0402
<< "Работа с комментариями" >>

Автор MaximРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 10
Просмотров: 6283
Последний ответ 17 Май 2011, 11:06
от cska-fanat-kz
Доступ к реквизитам формы из другой формы? 8.x, работа с табличным полем формы

Автор nick_EРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 9
Просмотров: 6960
Последний ответ 24 Окт 2011, 03:00
от nick_E
v8: УТ 10.3 работа с набор-пакетами и набор-комплектами

Автор altayknigaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 0
Просмотров: 3507
Последний ответ 14 Сен 2011, 12:07
от altaykniga
Стаж "Работа на Севере"

Автор PartizAnkaРаздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 6347
Последний ответ 25 Окт 2013, 07:27
от PartizAnka

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

wise wise
58 Сообщений
oleg-x
54 Сообщений
AIFrame AIFrame
47 Сообщений
alex0402
44 Сообщений
alexandr_ll
43 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
42 Сообщений
LexaK
31 Сообщений
BuhRust
28 Сообщений
andron81_81
24 Сообщений
MuI_I_Ika MuI_I_Ika
22 Сообщений

* Кто онлайн

  • Точка Гостей: 166
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal