Код 1C v 8.х Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если ЗначениеНеЗаполнено( ДатаВступления) Тогда
Предупреждение( "Не заполнена дата вступления приказа на стоимость обучения. Проведение документа отменено" ) ;
Отказ = Истина ;
Возврат ;
КонецЕсли ;
Для каждого Строка из Товары Цикл
Если ЗначениеНеЗаполнено( ВУЗ) или ЗначениеНеЗаполнено( Строка. ПрограммаОбучения) или ЗначениеНеЗаполнено( Строка. ФормаОбучения) или ЗначениеНеЗаполнено( Строка. Специальность)
или ЗначениеНеЗаполнено( Строка. Сумма) или ЗначениеНеЗаполнено( Строка. Валюта) или ЗначениеНеЗаполнено( Строка. ПериодичностьОплаты) Тогда
Предупреждение( "В строке " + Строка. НомерСтроки+ " не установлены все реквизиты для установки стоимости обучения" ) ;
Если ЭтотОбъект. Проведен Тогда
ЭтотОбъект. Проведен = Ложь ;
ЭтотОбъект. Записать( РежимЗаписиДокумента. ОтменаПроведения) ;
КонецЕсли ;
Прервать ;
КонецЕсли ;
Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПриказПоСтоимостиОбучения.Ссылка,
| ПриказПоСтоимостиОбучения.Товары.(
| Справочник
| ),
| СтоимостьОбучения.Ссылка КАК СсылкаСправочник
|ИЗ
| Документ.ПриказПоСтоимостиОбучения КАК ПриказПоСтоимостиОбучения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтоимостьОбучения КАК СтоимостьОбучения
| ПО ПриказПоСтоимостиОбучения.Товары.Справочник = СтоимостьОбучения.Ссылка
|ГДЕ
| СтоимостьОбучения.ВУЗ = &ВУЗ
| И СтоимостьОбучения.ФормаОбучения = &ФормаОбучения
| И СтоимостьОбучения.ПрограммаОбучения = &ПрограммаОбучения
| И СтоимостьОбучения.Специальность = &Специальность
| И СтоимостьОбучения.ДатаВступления = &Дата" ;
Запрос. УстановитьПараметр( "ВУЗ" , ВУЗ) ;
Запрос. УстановитьПараметр( "ФормаОбучения" , Строка. ФормаОбучения) ;
Запрос. УстановитьПараметр( "ПрограммаОбучения" , Строка. ПрограммаОбучения) ;
Запрос. УстановитьПараметр( "Специальность" , Строка. Специальность) ;
Запрос. УстановитьПараметр( "Дата" , ДатаВступления) ;
Результат = Запрос. Выполнить( ) ;
Выборка = Результат. Выбрать( ) ;
Если Выборка. Следующий( ) Тогда
СправочникСсылка = Выборка. СсылкаСправочник. ПолучитьОбъект( ) ;
Иначе
СправочникСсылка = Справочники. СтоимостьОбучения. СоздатьЭлемент( ) ;
КонецЕсли ;
СправочникСсылка. ВУЗ = ВУЗ;
СправочникСсылка. ФормаОбучения = Строка. ФормаОбучения;
СправочникСсылка. ПрограммаОбучения = Строка. ПрограммаОбучения;
СправочникСсылка. Специальность = Строка. Специальность;
СправочникСсылка. Сумма = Строка. Сумма;
СправочникСсылка. Валюта = Строка. Валюта;
СправочникСсылка. ПериодичностьОплаты = Строка. ПериодичностьОплаты;
СправочникСсылка. НомерПриказа = НомерПриказа;
СправочникСсылка. ДатаВступления = ДатаВступления;
СправочникСсылка. Наименование = СокрЛП( Строка. ПрограммаОбучения) + " " + СокрЛП( Строка. Специальность) + " " + СокрЛП( Строка. ФормаОбучения) + " " + СокрЛП( ВУЗ) + " " + Формат( ДатаВступления, "ДФ=dd.MM.yyyy" ) ;
СправочникСсылка. Записать( ) ;
Строка. Справочник = СправочникСсылка. Ссылка;
Запрос2 = Новый Запрос;
Запрос2 . Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Группы.ПрограммаОбучения = &ПрограммаОбучения
| И Номенклатура.Группы.ВУЗ = &ВУЗ
| И Номенклатура.Группы.ФормаОбучения = &ФормаОбучения
| И Номенклатура.Группы.Специальность = &Специальность" ;
Запрос2 . УстановитьПараметр( "ВУЗ" , ВУЗ) ;
Запрос2 . УстановитьПараметр( "ПрограммаОбучения" , Строка. ПрограммаОбучения) ;
Запрос2 . УстановитьПараметр( "ФормаОбучения" , Строка. ФормаОбучения) ;
Запрос2 . УстановитьПараметр( "Специальность" , Строка. Специальность) ;
Результат = Запрос2 . Выполнить( ) ;
НоменклатураВыборка = Результат. Выбрать( ) ;
Пока НоменклатураВыборка. Следующий( ) Цикл
ПолеТаблица = Новый ТаблицаЗначений;
ПолеТаблица. Колонки. Добавить( "ДатаВступления" ) ;
ПолеТаблица. Колонки. Добавить( "Валюта" ) ;
ПолеТаблица. Колонки. Добавить( "Сумма" ) ;
Запрос = Новый Запрос;
Запрос. Текст = "ВЫБРАТЬ
| СтоимостьОбучения.Ссылка,
| СтоимостьОбучения.ВУЗ,
| СтоимостьОбучения.ФормаОбучения,
| СтоимостьОбучения.ПрограммаОбучения,
| СтоимостьОбучения.Специальность,
| СтоимостьОбучения.Сумма,
| СтоимостьОбучения.Валюта,
| СтоимостьОбучения.ПериодичностьОплаты,
| СтоимостьОбучения.Номенклатура,
| СтоимостьОбучения.НомерПриказа,
| СтоимостьОбучения.ДатаВступления
|ИЗ
| Справочник.СтоимостьОбучения КАК СтоимостьОбучения
|ГДЕ
| СтоимостьОбучения.ВУЗ = &ВУЗ
| И СтоимостьОбучения.ФормаОбучения = &ФормаОбучения
| И СтоимостьОбучения.ПрограммаОбучения = &ПрограммаОбучения
| И СтоимостьОбучения.Специальность = &Специальность" ;
Запрос. УстановитьПараметр( "ВУЗ" , ВУЗ) ;
Запрос. УстановитьПараметр( "ПрограммаОбучения" , Строка. ПрограммаОбучения) ;
Запрос. УстановитьПараметр( "ФормаОбучения" , Строка. ФормаОбучения) ;
Запрос. УстановитьПараметр( "Специальность" , Строка. Специальность) ;
Результат = Запрос. Выполнить( ) ;
Выборка = Результат. Выбрать( ) ;
Если Выборка. Количество( ) = 0 Тогда
Продолжить;
КонецЕсли ;
Пока Выборка. Следующий( ) Цикл
НоваяСтрока = ПолеТаблица. Добавить( ) ;
НоваяСтрока. ДатаВступления = Выборка. ДатаВступления;
НоваяСтрока. Валюта = Выборка. Валюта;
НоваяСтрока. Сумма = Выборка. Сумма;
КонецЦикла ;
Для каждого СтрокаСтоимости из ПолеТаблица Цикл
НоваяДата = СтрокаСтоимости. ДатаВступления;
НоваяВалюта = СтрокаСтоимости. Валюта;
НоваяСумма = СтрокаСтоимости. Сумма;
Запрос1 = Новый Запрос;
Запрос1 . Текст = "ВЫБРАТЬ
| ЦеныНоменклатуры.Период КАК Период,
| ЦеныНоменклатуры.Регистратор,
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.Валюта,
| ЦеныНоменклатуры.Цена,
| ЦеныНоменклатуры.ТипЦен
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.Период = &Дата
| И ЦеныНоменклатуры.Валюта = &Валюта
| И ЦеныНоменклатуры.Цена = &Сумма
| И ЦеныНоменклатуры.Номенклатура = &Номенклатура" ;
Запрос1 . УстановитьПараметр( "Номенклатура" , НоменклатураВыборка. Ссылка) ;
Запрос1 . УстановитьПараметр( "Дата" , НоваяДата) ;
Запрос1 . УстановитьПараметр( "Валюта" , НоваяВалюта) ;
Запрос1 . УстановитьПараметр( "Сумма" , НоваяСумма) ;
Результат = Запрос1 . Выполнить( ) ;
Выборка = Результат. Выбрать( ) ;
Если Выборка. Количество( ) = 0 Тогда
ПерСтоим = Документы. УстановкаЦенНоменклатуры. СоздатьДокумент( ) ;
ПерСтоим. Дата = НоваяДата;
Если НоваяВалюта. Пустая( ) Тогда
Сообщить( "Не установлена валюта стоимости. Принята валюта руб!" ) ;
НоваяВалюта = Справочники. Валюты. НайтиПоКоду( "810" ) ;
СпрЦенТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в РУБ" ) ;
СпрСтоимТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в РУБ" ) ;
КонецЕсли ;
СпрСтоимВалюта = НоваяВалюта. Ссылка;
Если Найти( ВРег( НоваяВалюта) , "РУБ" ) < > 0 Тогда
СпрСтоимТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в РУБ" ) ;
СпрЦенТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в РУБ" ) ;
ИначеЕсли Найти( ВРег( НоваяВалюта) , "USD" ) < > 0 Тогда
СпрСтоимТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в USD" ) ;
СпрЦенТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в USD" ) ;
ИначеЕсли Найти( ВРег( НоваяВалюта) , "УЕ" ) < > 0 Тогда
СпрСтоимТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в УЕ" ) ;
СпрЦенТипЦен = Справочники. ТипыЦенНоменклатуры. НайтиПоНаименованию( "Основной в УЕ" ) ;
КонецЕсли ;
СпрСтоимЕдиницаИзмерения = Справочники. ЕдиницыИзмерения. НайтиПоНаименованию( "год" ) ;
СпрСтоим = ПерСтоим. Товары. Добавить( ) ;
СпрЦен = ПерСтоим. ТипыЦен. Добавить( ) ;
СпрЦен. ТипЦен = СпрЦенТипЦен;
СпрСтоим. ТипЦен = СпрСтоимТипЦен;
СпрСтоим. Цена = НоваяСумма;
СпрСтоим. Валюта = СпрСтоимВалюта;
СпрСтоим. ЕдиницаИзмерения = СпрСтоимЕдиницаИзмерения;
СпрСтоим. Номенклатура = НоменклатураВыборка. Ссылка;
Попытка
ПерСтоим. Записать( РежимЗаписиДокумента. Проведение, РежимПроведенияДокумента. Неоперативный) ;
Сообщить( "Создан документ " + СокрЛП( ПерСтоим) + " для записи истории номенклатуры!" ) ;
Исключение
Сообщить( "Документ установки цен номенклатуры с такими параметрами уже существует" ) ;
КонецПопытки ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
КонецЦикла ;
ЭтотОбъект. Записать( РежимЗаписиДокумента. Запись) ;
КонецПроцедуры
Проблема при записи справочника изза этого не могу идти далее
Изменено 01.07.13 16:04:43