Показывать по
10
20
40
сообщений
Новая тема
Ответить
Waltar
Дата регистрации: 23.11.2008
Сообщений: 8
ЗУП 2.5.18.2<br>1С 8.1.15.14 <br> <br>На любой пересчитываемый документ выдает ошибку: <br> <br>Документ Регистрация разовых начислений сотрудников организаций 00000004338 от 29.10.2009 13:40:35 не может быть перерассчитан! {ОбщийМодуль.ПроведениеРасчетовПереопределяемый(7070)}: Ошибка при вызове метода контекста (Выполнить): Не установлен менеджер временных таблиц Открыть <br><br>Как установить менеджер временных таблиц? <br>
StarS
Дата регистрации: 15.07.2003
Сообщений: 1623
«Менеджер временных таблиц — это атрибут запроса.<br>При описании запроса должна быть конструкция что-то вроде:<br><br>МВТ = Новый МенеджерВременныхТаблиц;<br>Запрос.МенеджерВременныхТаблиц = МВТ;<br><br>Т.е. все это должно быть в тексте модулей.<br><br>Может, у Вас с платформой не в порядке чего?»
Prikum
активный пользователь
онлайн
Дата регистрации: 18.02.2002
Сообщений: 20834
а не надо было ему ставить тестовую платформу!
StarS
Дата регистрации: 15.07.2003
Сообщений: 1623
Дык, если верить http://users.v8.1c.ru/Actual.aspx, 8.1.15.14 уже финальная с 30.10.09.
Prikum
активный пользователь
онлайн
Дата регистрации: 18.02.2002
Сообщений: 20834
«Опс, как быстро летит время! ;)»
Вьюн
Дата регистрации: 14.01.2007
Сообщений: 657
«Посмотрел в релизе 2.5.17.8 стоит сначала<br>Запрос.Выполнить();<br>а уже после<br>Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;<br>понятно, что ошибка, которая не исправлена в вашем релизе.<br>Надо поменять эти строки местами.»
Показывать по
10
20
40
сообщений
|
|||
| Лунтик
19.09.13 — 12:43 |
В консоле запросов вставлен текст запроса (ЗУП):
ВЫБРАТЬ РАЗЛИЧНЫЕ При выполнении запроса дает ошибку: не установлен менеджер временных таблиц — как его установить? |
||
| de Bug
1 — 19.09.13 — 12:45 |
ПОМЕСТИТЬ ВТСОТРУДНИКИ убери |
||
| Лунтик
2 — 19.09.13 — 12:47 |
Как тогда сделать временную таблицу (для использования в последующих запросах)? |
||
| pumbaEO
3 — 19.09.13 — 12:59 |
Используй правильную консоль. |
||
| shuhard
4 — 19.09.13 — 13:00 |
(2) пакетный запрос |
||
| Лунтик
5 — 19.09.13 — 13:09 |
Добавили точку с запятой (;) и Выбрать * из ВТСОТРУДНИКИ заработало. Только хотелось бы чтобы система сказала: у тебя таки-то временные таблицы, вот такая-то результирующая таблица, а под плюсиком лежит их содежимое. Я приувеличиваю? |
||
|
pumbaEO 6 — 19.09.13 — 13:11 |
(5) http://devtool1c.ucoz.ru/ |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 |
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр ОстаткиНоменклатуры Расход Движения.ОстаткиНоменклатуры.Записывать = Истина; //!!! ОБЕСПЕЧЕНИЕ НЕИЗМЕННОСТИ ДАННЫХ // МЕЖДУ РАСЧЕТОМ И ОКОНЧАНИЕМ ПРОВЕДЕНИЯ !!! Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.УстановитьЗначение("Склад", Склад); ЭлементБлокировки.ИсточникДанных = Товары.Выгрузить( ,"Номенклатура"); ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура"); //!!! УДАЛЕНИЕ СОБСТВЕННЫХ СТАРЫХ ДВИЖЕНИЙ // ПО РЕГИСТРУ ОСТАТКИ НОМЕНКЛАТУРЫ !!! //Движения.ОстаткиНоменклатуры.Записать; // ПО РЕГИСТРУ ОСТАТКИ НОМЕНКЛАТУРЫ !!! //!!! ПОЛУЧЕНИЕ ДАННЫХ ТОЛЬКО ПО ТОВАРАМ !!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПрдажаТоваровТовары.Номенклатура КАК Номенклатура, | СУММА(ПрдажаТоваровТовары.Количество) КАК Количество, | ПрдажаТоваровТовары.Ссылка.Склад КАК Склад, | ПрдажаТоваровТовары.Ссылка.Дата, | СУММА(ПрдажаТоваровТовары.Сумма) КАК Сумма |ПОМЕСТИТЬ ТабДок |ИЗ | Документ.ПрдажаТоваров.Товары КАК ПрдажаТоваровТовары |ГДЕ | ПрдажаТоваровТовары.Ссылка = &Ссылка | И ПрдажаТоваровТовары.Номенклатура.ВидНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга) | |СГРУППИРОВАТЬ ПО | ПрдажаТоваровТовары.Номенклатура, | ПрдажаТоваровТовары.Ссылка.Склад, | ПрдажаТоваровТовары.Ссылка.Дата | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Склад |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТабДок.Дата, | ТабДок.Номенклатура КАК Номенклатура, | ТабДок.Количество КАК Количество, | ОстаткиНоменклатурыОстатки.Партия, | ТабДок.Склад КАК Склад, | ОстаткиНоменклатурыОстатки.Партия.Дата КАК ПартияДата, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, | ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СуммаОстаток, 0) КАК СуммаОстаток, | ТабДок.Сумма КАК СуммаДок |ИЗ | ТабДок КАК ТабДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки( | &Момент, | (Номенклатура, Склад) В | (ВЫБРАТЬ | ТабДок.Номенклатура, | ТабДок.Склад | ИЗ | ТабДок КАК ТабДок)) КАК ОстаткиНоменклатурыОстатки | ПО ТабДок.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура | |УПОРЯДОЧИТЬ ПО | Номенклатура, | ПартияДата |ИТОГИ | МАКСИМУМ(Количество), | МАКСИМУМ(Склад), | СУММА(КоличествоОстаток), | СУММА(СуммаОстаток), | МАКСИМУМ(СуммаДок) |ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТабДок.Номенклатура, | ТабДок.Количество, | БронированиеТовараОстатки.Номенклатура КАК Номенклатура1, | ТабДок.Склад, | БронированиеТовараОстатки.КоличествоОстаток, | БронированиеТовараОстатки.Номенклатура КАК Номенклатура2 |ИЗ | ТабДок КАК ТабДок | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БронированиеТовара.Остатки( | &Момент, | (Номенклатура, Склад) В | (ВЫБРАТЬ | ТабДок.Номенклатура, | ТабДок.Склад | ИЗ | ТабДок КАК ТабДок)) КАК БронированиеТовараОстатки | ПО ТабДок.Номенклатура = БронированиеТовараОстатки.Номенклатура"; Если Режим = РежимПроведенияДокумента.Оперативный Тогда Запрос.УстановитьПараметр("Момент", Неопределено); Иначе Запрос.УстановитьПараметр("Момент", МоментВремени()); КонецЕсли; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНоменклатура.Следующий() Цикл Если ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.Количество Тогда //КОНТРОЛЬ ОТРИЦАТЕЛЬНЫХ ОСТАТКОВ // СПИСЫВАЕМЫХ ТОВАРОВ !!! Отказ = Истина; Сообщение = Новый СообщениеПользователю; Нехватка = ВыборкаНоменклатура.Количество - ВыборкаНоменклатура.КоличествоОстаток; Сообщение.Текст = "В документе N" + Номер +" от "+Дата+" не хватает "+Нехватка+" единиц товара "+ ВыборкаНоменклатура.Номенклатура; Сообщение.Сообщить(); Иначе //!!! ВЫЧИСЛЕНИЕ СЕБЕСТОИМОСТИ // СПИСЫВАЕМЫХ ПАРТИЙ ТОВАРОВ!!! КоличествоНадоСписать = ВыборкаНоменклатура.Количество; ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если ВыборкаДетальныеЗаписи.КоличествоОстаток <= КоличествоНадоСписать Тогда //списываем всю партию КоличествоКСписанию = ВыборкаДетальныеЗаписи.КоличествоОстаток; СтоимостьКСписанию = ВыборкаДетальныеЗаписи.СуммаОстаток; //уменьшаем количество к списанию КоличествоНадоСписать = КоличествоНадоСписать - КоличествоКСписанию; Иначе //списываем часть партии КоличествоКСписанию = КоличествоНадоСписать; Если ВыборкаДетальныеЗаписи.КоличествоОстаток <> 0 Тогда СтоимостьКСписанию = ВыборкаДетальныеЗаписи.СуммаОстаток/ ВыборкаДетальныеЗаписи.КоличествоОстаток*КоличествоКСписанию; иначе СтоимостьКСписанию = ВыборкаДетальныеЗаписи.СуммаОстаток; КонецЕсли; //обнуляем количество к списанию КоличествоНадоСписать = 0; КонецЕсли; //формируем набор записей Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Склад = Склад; Движение.Партия = ВыборкаДетальныеЗаписи.Партия; Движение.Количество = КоличествоКСписанию; Движение.Сумма = СтоимостьКСписанию; Если ВыборкаНоменклатура.Количество<>0 Тогда Движение.СуммаПродажи = КоличествоКСписанию; КонецЕсли; //проверяем необходимость дальнейшего перебора партий Если КоличествоНадоСписать <= 0 Тогда Прервать; КонецЕсли; КонецЦикла; // по партиям КонецЕсли; КонецЦикла; //по товарам Движения.Задолженности.Записывать = Истина; // регистр Задолженности Приход Движение = Движения.Задолженности.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Кнотрагент = Контарагент; Движение.СуммаДолга = СуммаДокумента; Движения.БронированиеТовара.Записывать = Истина; Движения.СвободныеОстатки.БлокироватьДляИзменения = Истина; Движения.СвободныеОстатки.Записывать = Истина; //Запрос для определения только товаров документа Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПрдажаТоваровТовары.Номенклатура, | СУММА(ПрдажаТоваровТовары.Количество) КАК Количество |ИЗ | Документ.ПрдажаТоваров.Товары КАК ПрдажаТоваровТовары |ГДЕ | ПрдажаТоваровТовары.Ссылка = &Ссылка | И ПрдажаТоваровТовары.Номенклатура.ВидНоменклатуры <> | ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга) |СГРУППИРОВАТЬ ПО | ПрдажаТоваровТовары.Номенклатура"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // регистр СвободныеОстатки Расход Движение = Движения.СвободныеОстатки.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура; Движение.Склад = Склад; Движение.Количество = ВыборкаДетальныеЗаписи.Количество; КонецЦикла; //Подготовим менеджер временных таблиц для заполнения перечня товаров //изменившихся свободных остатков в модуле набора записей регистра МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Движения.СвободныеОстатки.ДополнительныеСвойства.Вставить("МенеджерВременныхТаблицПроведенияПродажиТоваров",МенеджерВременныхТаблиц); //Общая запись всех движений Движения.Записать(); //Контроль отрицательных остатков Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | СвободныеОстаткиОстатки.Номенклатура, | СвободныеОстаткиОстатки.КоличествоОстаток |ИЗ | ТабИзменившихсяТоваров КАК ТабИзменившихсяТоваров | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки( | &Момент, | (Номенклатура, Склад) В | (ВЫБРАТЬ | ТабИзменившихсяТоваров.Номенклатура, | ТабИзменившихсяТоваров.Склад | ИЗ | ТабИзменившихсяТоваров КАК ТабИзменившихсяТоваров)) КАК СвободныеОстаткиОстатки | ПО (СвободныеОстаткиОстатки.КоличествоОстаток > 0) |ГДЕ СвободныеОстаткиОстатки.КоличествоОстаток > 0"; Если Режим = РежимПроведенияДокумента.Оперативный Тогда Запрос.УстановитьПараметр("Момент", Неопределено); Иначе Запрос.УстановитьПараметр("Момент", МоментВремени()); КонецЕсли; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Отказ = Истина; Сообщение = Новый СообщениеПользователю; Нехватка = - ВыборкаДетальныеЗаписи.КоличествоОстаток; Сообщение.Текст = "В документе N" + Номер +" от "+Дата+" не хватает " +Нехватка+" единиц товара "+ВыборкаДетальныеЗаписи.Номенклатура; Сообщение.Сообщить(); КонецЦикла; КонецПроцедуры |
+7

Что такое менеджер временных таблиц и как с ним работать?
В 1С есть такая замечательная вещь, как МенеджерВременныхТаблиц. Этот объект позволяет передавать временные таблицы из одного запроса в другой. То есть, мы можем создать временную таблицу в запросе, прерваться, выполнить какой-нибудь код, и продолжить работу с этой временной таблицей дальше.
Код 1C v 8.2 УП
Запрос = Новый Запрос;
МВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.Текст = "ВЫБРАТЬ
| ТЧ.Номенклатура
|ПОМЕСТИТЬ ВременнаяТЗ
|ИЗ
| &ТЧ КАК ТЧ
|ГДЕ
| ТЧ.Номенклатура В ИЕРАРХИИ(&Номенклатура)
| И ТЧ.Цена < 5";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("ТЧ", ТЧ);
РезультатЗапроса = Запрос.Выполнить();
Запрос2 = Новый Запрос;
Запрос2.Текст = "ВЫБРАТЬ
| ВременнаяТЗ.Номенклатура
|ИЗ
| ВременнаяТЗ КАК ВременнаяТЗ";
Запрос2.МенеджерВременныхТаблиц = МВТ;
РезультатЗапроса = Запрос2.Выполнить().Выгрузить();
Например, в отчете в зависимости от выбранных настроек первичные данные обрабатываются тем или иным способом. Тогда имеет смысл в одной процедуре сформировать эти данные и поместить их во временную таблицу, которую уже передаем через менеджер временных таблиц в другую процедуру, отвечающую за выбранный способ обработки. Это позволит сократить код, сделать запросы более читаемыми. А так же в случае, если возникнут изменения в методике подготовки первичных данных для обработки, то потребуется внести изменения только в один запрос, а не в каждый.
В качестве примера работы с менеджером временных таблиц приведу следующую обработку.

Я создаю менеджер временных таблиц, и передаю его последовательно в каждую процедуру, для создания и объединения временных таблиц. Результат выводится в сводную таблицу.
Код 1C v 8.2 УП
&НаКлиенте
Процедура ЗаполнитьСводную(Команда)
ЗаполнитьСводнуюНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСводнуюНаСервере()
МенВТ = Новый МенеджерВременныхТаблиц;
ПолучитьДанныеА(МенВТ);
ПолучитьДанныеБ(МенВТ);
ЗагрузитьСводные(МенВТ);
МенВТ.Закрыть();
КонецПроцедуры
&НаСервере
Процедура ПолучитьДанныеА(МенВремТаб)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенВремТаб;
Запрос.Текст = "ВЫБРАТЬ
| ТаблицаА.Контрагент КАК Контрагент,
| ТаблицаА.Сумма
|ПОМЕСТИТЬ ТабА
|ИЗ
|ТаблицаА КАК ТаблицаА
|
|ИНДЕКСИРОВАТЬ ПО
| Контрагент";
Запрос.УстановитьПараметр("ТаблицаА", ТаблицаА.Выгрузить());
Запрос.Выполнить();
КонецПроцедуры // ПолучитьДанныеА()
&НаСервере
Процедура ПолучитьДанныеБ(МенВремТаб)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенВремТаб;
Запрос.Текст = "ВЫБРАТЬ
| ТаблицаБ.Контрагент КАК Контрагент,
| ТаблицаБ.Комментарий
|ПОМЕСТИТЬ ТабБ
|ИЗ
|ТаблицаБ КАК ТаблицаБ
|
|ИНДЕКСИРОВАТЬ ПО
| Контрагент";
Запрос.УстановитьПараметр("ТаблицаБ", ТаблицаБ.Выгрузить());
Запрос.Выполнить();
КонецПроцедуры // ПолучитьДанныеА()
&НаСервере
Процедура ЗагрузитьСводные(МенВремТаб)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенВремТаб;
Запрос.Текст = "ВЫБРАТЬ
| ЕСТЬNULL(ТабА.Контрагент, ТабБ.Контрагент) КАК Контрагент,
| ЕСТЬNULL(ТабА.Сумма, 0) КАК Сумма,
| ЕСТЬNULL(ТабБ.Комментарий, """") КАК Комментарий
|ИЗ
| ТабА КАК ТабА
| ПОЛНОЕ СОЕДИНЕНИЕ ТабБ КАК ТабБ
| ПО ТабА.Контрагент = ТабБ.Контрагент
|
|УПОРЯДОЧИТЬ ПО
| Контрагент
|АВТОУПОРЯДОЧИВАНИЕ";
ТаблицаСводная.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры // ЗагрузитьСводные()
|
Andrew Новичок Сообщений: 7 |
Добрый день, как убрать ошибку? Модуль закрыт, сами не можем. |
|
Andrew Новичок Сообщений: 7 |
Телефония — 1.0.22.3 Но, свободные лицензии точно есть. |
|
Andrew Новичок Сообщений: 7 |
Добрый день, отвязка от хоста не помогла. |
|
Andrew Новичок Сообщений: 7 |
Посмотрел в журнале, на лицензию больше не ругается, но появилась новая ошибка: |
|
Портнов Алексей Модератор Сообщений: 3298 |
#7 0 27.09.2017 10:06:16 Ничто подобное правили в более новой версии модуля статистики. Если не поможет — создайте обращение через форму обратной связи: https://telefon.miko.ru/contacts/ |
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{Документ.ОказаниеУслуги.М� �дульОбъекта(68)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос2.Выполнить();
по причине:
{(9, 2)}: Таблица не найдена «НоменклатураДокумента»
<<?>>НоменклатураДокумента КАК НоменклатураДокументаПроцедура ОбработкаПроведения(Отказ, Режим)
// регистр ОстатокМатериалов Расход
Движения.ОстатокМатериало� �.Записывать = Истина;
Движения.СтоимостьМатериа� �ов.Записывать = Истина;
Движения.Продажи.Записыват ь = Истина;//Создать менеджер временных таблиц
МенеджерВТ = Новый МенеджерВременныхТаблиц;Запрос = Новый Запрос;
//Какой менеджер временных таблиц использует этот запрос
Запрос.МенеджерВременныхТ� �блиц = МенеджерВТ;Запрос.Текст =
«ВЫБРАТЬ
| ОказаниеУслугиПереченьНом енклатуры.Номенклатура КАК Номенклатура,
| ОказаниеУслугиПереченьНом енклатуры.Номенклатура.Вид Номенклатуры КАК ВидНоменклатуры,
| СУММА(ОказаниеУслугиПереч� �ньНоменклатуры.Количество ) КАК КоличествоВДокументе,
| СУММА(ОказаниеУслугиПереч� �ньНоменклатуры.Сумма) КАК СуммаВДокументе
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
| Документ.ОказаниеУслуги.Пе реченьНоменклатуры КАК ОказаниеУслугиПереченьНом енклатуры
|ГДЕ
| ОказаниеУслугиПереченьНом енклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ОказаниеУслугиПереченьНом енклатуры.Номенклатура,
| ОказаниеУслугиПереченьНом енклатуры.Номенклатура.Вид Номенклатуры»;Запрос.УстановитьПараметр( «Ссылка», Ссылка);
Запрос2 = Новый Запрос;
Запрос2.МенеджерВременныхТ аблиц = МенеджерВТ;
Запрос2.Текст = «ВЫБРАТЬ
| НоменклатураДокумента.Ном� �нклатура КАК Номенклатура,
| НоменклатураДокумента.Вид� �оменклатуры КАК ВидНоменклатуры,
| НоменклатураДокумента.Кол� �чествоВДокументе КАК КоличествоВДокументе,
| НоменклатураДокумента.Сум� �аВДокументе КАК СуммаВДокументе,
| ЕСТЬNULL(СтоимостьМатериало� �Остатки.СтоимостьОстаток, 0) КАК Стоимость,
| ЕСТЬNULL(ОстатокМатериаловО� �татки.КоличествоОстаток, 0) КАК Количество
|ИЗ
| НоменклатураДокумента КАК НоменклатураДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Стоимос� �ьМатериалов.Остатки(
| ,
| Материал В
| (ВЫБРАТЬ
| НоменклатураДокумента.Ном� �нклатура
| ИЗ
| НоменклатураДокумента)) КАК СтоимостьМатериаловОстатк и
| ПО НоменклатураДокумента.Ном� �нклатура = СтоимостьМатериаловОстатк и.Материал
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остаток� �атериалов.Остатки(
| ,
| Материалы В
| (ВЫБРАТЬ
| НоменклатураДокумента.Ном� �нклатура
| ИЗ
| НоменклатураДокумента)) КАК ОстатокМатериаловОстатки
| ПО НоменклатураДокумента.Ном� �нклатура = ОстатокМатериаловОстатки.� �атериалы»;//Запишем пустые наборы записей, что бы читать остатки без учета данных в документе
Движения.СтоимостьМатериа� �ов.Записать();
Движения.ОстатокМатериало� �.Записать();РезультатЗапроса = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Сл� �дующий() Цикл
Если ВыборкаДетальныеЗаписи.Ко� �ичество = 0 Тогда
СтоимостьМатериала = 0;
Иначе
СтоимостьМатериала = ВыборкаДетальныеЗаписи.Ст� �имость / ВыборкаДетальныеЗаписи.Ко� �ичество;
КонецЕсли;Если ВыборкаДетальныеЗаписи.Ви� �Номенклатуры = Перечисления.ВидыНоменкла� �уры.Материалы Тогда
// регистр ОстатокМатериалов Расход
Движение = Движения.ОстатокМатериало� �.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Рас� �од;
Движение.Период = Дата;
Движение.Материалы = ВыборкаДетальныеЗаписи.Но� �енклатура;
Движение.Склад = Склад;
Движение.Количество = ВыборкаДетальныеЗаписи.Ко� �ичествоВДокументе;//регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериа� �ов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Рас� �од;
Движение.Период = Дата;
Движение.Материал = ВыборкаДетальныеЗаписи.Но� �енклатура;
Движение.Стоимость = ВыборкаДетальныеЗаписи.Ко� �ичествоВДокументе * СтоимостьМатериала;
КонецЕсли;//регистр Продажи
Движение = Движения.Продажи.Добавить() ;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Но� �енклатура;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = ВыборкаДетальныеЗаписи.Ко� �ичествоВДокументе;
Движение.Выручка = ВыборкаДетальныеЗаписи.Су� �маВДокументе;
Движение.Стоимость = ВыборкаДетальныеЗаписи.Ко� �ичествоВДокументе * СтоимостьМатериала;КонецЦикла;
КонецПроцедуры