|
v8: не генерит справочник автоматически | ☑ | ||
---|---|---|---|---|
0
Ilias54rus
03.07.13
✎
08:20
|
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если ЗначениеНеЗаполнено(ДатаВступления) Тогда Предупреждение("Не заполнена дата вступления приказа на стоимость обучения. Проведение документа отменено"); Отказ = Истина; Возврат; КонецЕсли; Для каждого Строка из Товары Цикл Если ЗначениеНеЗаполнено(ВУЗ) или ЗначениеНеЗаполнено(Строка.ПрограммаОбучения) или ЗначениеНеЗаполнено(Строка.ФормаОбучения) или ЗначениеНеЗаполнено(Строка.Специальность) или ЗначениеНеЗаполнено(Строка.Сумма) или ЗначениеНеЗаполнено(Строка.Валюта) или ЗначениеНеЗаполнено(Строка.ПериодичностьОплаты) Тогда Предупреждение("В строке "+Строка.НомерСтроки+" не установлены все реквизиты для установки стоимости обучения"); Если ЭтотОбъект.Проведен Тогда ЭтотОбъект.Проведен = Ложь; ЭтотОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЕсли; Прервать; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ПриказПоСтоимостиОбучения.Ссылка, | ПриказПоСтоимостиОбучения.Товары.( | Справочник | ), | СтоимостьОбучения.Ссылка КАК СсылкаСправочник |ИЗ | Документ.ПриказПоСтоимостиОбучения КАК ПриказПоСтоимостиОбучения | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтоимостьОбучения КАК СтоимостьОбучения | ПО ПриказПоСтоимостиОбучения.Товары.Справочник = СтоимостьОбучения.Ссылка |ГДЕ | СтоимостьОбучения.ВУЗ = &ВУЗ | И СтоимостьОбучения.ФормаОбучения = &ФормаОбучения | И СтоимостьОбучения.ПрограммаОбучения = &ПрограммаОбучения | И СтоимостьОбучения.Специальность = &Специальность | И СтоимостьОбучения.ДатаВступления = &Дата"; Запрос.УстановитьПараметр("ВУЗ", ВУЗ); Запрос.УстановитьПараметр("ФормаОбучения",Строка.ФормаОбучения); Запрос.УстановитьПараметр("ПрограммаОбучения", Строка.ПрограммаОбучения); Запрос.УстановитьПараметр("Специальность", Строка.Специальность); Запрос.УстановитьПараметр("Дата", ДатаВступления); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если Выборка.Следующий() Тогда СправочникСсылка = Выборка.СсылкаСправочник.ПолучитьОбъект(); Иначе СправочникСсылка = Справочники.СтоимостьОбучения.СоздатьЭлемент(); КонецЕсли; СправочникСсылка.ВУЗ = ВУЗ; СправочникСсылка.ФормаОбучения = Строка.ФормаОбучения; СправочникСсылка.ПрограммаОбучения = Строка.ПрограммаОбучения; СправочникСсылка.Специальность = Строка.Специальность; СправочникСсылка.Сумма = Строка.Сумма; СправочникСсылка.Валюта = Строка.Валюта; СправочникСсылка.ПериодичностьОплаты = Строка.ПериодичностьОплаты; СправочникСсылка.НомерПриказа = НомерПриказа; СправочникСсылка.ДатаВступления = ДатаВступления; СправочникСсылка.Наименование = СокрЛП(Строка.ПрограммаОбучения)+" "+СокрЛП(Строка.Специальность)+" "+СокрЛП(Строка.ФормаОбучения)+" "+СокрЛП(ВУЗ)+" "+Формат(ДатаВступления, "ДФ=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 Тогда СпрСтоимТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Основной в УЕ"); СпрЦенТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Основной в УЕ"); КонецЕсли; СпрСтоимЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("год"); СпрСтоим = ПерСтоим.Товары.Добавить(); СпрЦен = ПерСтоим.ТипыЦен.Добавить(); СпрЦен.ТипЦен = СпрЦенТипЦен; СпрСтоим.ТипЦен = СпрСтоимТипЦен; СпрСтоим.Цена = НоваяСумма; СпрСтоим.Валюта = СпрСтоимВалюта; СпрСтоим.ЕдиницаИзмерения = СпрСтоимЕдиницаИзмерения; СпрСтоим.Номенклатура = НоменклатураВыборка.Ссылка; Попытка ПерСтоим.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); Сообщить("Создан документ "+СокрЛП(ПерСтоим)+" для записи истории номенклатуры!"); Исключение Сообщить("Документ установки цен номенклатуры с такими параметрами уже существует"); КонецПопытки; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; ЭтотОбъект.Записать(РежимЗаписиДокумента.Запись); КонецПроцедуры код процедуры проведения при проведении возникают следующие ошибки Ошибка при выполнении обработчика - 'ОбработкаПроведения' по причине: {Документ.ПриказПоСтоимостиОбучения.МодульОбъекта(64)}: Ошибка при вызове метода контекста (Записать) по причине: по причине: В данной транзакции уже происходили ошибки! И еще одна при генерации справочника стоимостьобучения СправочникСсылка.Записать(); <Объект не найден> (77:8a9f001a4bf17cb111e2e38db6904be4) вот брать информацию должен из документа Приказобстомостиобучения и его табличной части товары |
|||
1
Галахад
гуру
03.07.13
✎
08:31
|
Транзакция отменилась - справочник не записался.
|
|||
2
Рэйв
03.07.13
✎
08:31
|
У тебя гдето битая ссылка. скорее всего из-за нее выпадает в ошибку
|
|||
3
Галахад
гуру
03.07.13
✎
08:33
|
А зачем записывать документ во время его же проведения я вообще не понял.
|
|||
4
butterbean
03.07.13
✎
08:34
|
(0) у тебя СправочникСсылка — это почти наверняка пустая ссылка, т.к. запрос у тебя не к таб части документа, а к шапке...
|
|||
5
Ilias54rus
03.07.13
✎
08:34
|
знаю что битая ссыль как её выпасти и исправить
|
|||
6
Ilias54rus
03.07.13
✎
08:38
|
и еще вопрос как организовать запрос к табличной части документа и к кое каким реквизитам документа
|
|||
7
Ilias54rus
03.07.13
✎
08:46
|
так нашел где он должен получить Обьект выбора
но он его не получает |
|||
8
Ilias54rus
03.07.13
✎
08:48
|
Галхад это уже не комне а к разработчикам системы Управление Образовательным Учереждением 2.0
|
|||
9
Ilias54rus
03.07.13
✎
08:49
|
СправочникСсылка = Выборка.СсылкаСправочник.ПолучитьОбъект();
но проблема явно в этой строке |
|||
10
George Wheels
03.07.13
✎
08:49
|
(6) ВЫБРАТЬ Док.Ссылка.РеквизитДокумента
Док.РеквизитТабличнойЧасти ИЗ Документ.КакойТо КАК Док |
|||
11
George Wheels
03.07.13
✎
08:50
|
(6) ВЫБРАТЬ Док.Ссылка.РеквизитДокумента
Док.РеквизитТабличнойЧасти ИЗ Документ.КакойТо.ТабличнаяЧасть КАК Док |
|||
12
Ilias54rus
03.07.13
✎
08:53
|
Георгий я вас понял а дальше выбор по строкам чтоб читал
|
|||
13
George Wheels
03.07.13
✎
09:24
|
(5) Администрирование - Тестирование и исправление
|
|||
14
Ilias54rus
03.07.13
✎
10:33
|
Такс провел тест мда при смене версии не все правильно перенеслось
|
|||
15
cw014
03.07.13
✎
10:43
|
1) За использование зарезервированных слов в качестве переменных - расстрел через повешание
2) ЭтотОбъект.Проведен = Ложь; ЭтотОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); Если делаешь запись через отмену проведения - признак "Проведен" взводить не нужно. Тем более использование отмены проведения в обработке проведения карается ч0рным властелином... 3) За запросы в цикле - пожизненный эцих с гвоздями. А у тебя два вложенных цикла 4) Первый запрос вообще эпичен - я не понял его цель. В нем кстати глюк твой и присутствует |
|||
16
acsent
03.07.13
✎
10:45
|
исключение при записи отменяет всю транзакцию. неважно в попытке или нет
|
|||
17
Ilias54rus
03.07.13
✎
10:57
|
Cw14 Тогда как создавать Справочник с параметрами из табличной части документа если не в цикле второй ответ на твой вопрос первый запрос как я понял это и есть создание справочника а второй Цен номенклатуры и Эцих не мне а фирме Infosuite которая разрабатывала эту конфигурацию
|
|||
18
rbcvg
03.07.13
✎
11:10
|
Автор, запятых тебе отсыпать? Читать невозможно.
|
|||
19
Ilias54rus
03.07.13
✎
11:19
|
Извините меня двоечника по русскому языку.
|
|||
20
Ilias54rus
03.07.13
✎
13:51
|
Выяснил Справочник генерируеться но не записываеться
|
|||
21
hhhh
03.07.13
✎
14:35
|
(20) за создание справочника из документа надо расстреливать, потом тело сжечь, и то, что осталось, утопить.
|
|||
22
Ilias54rus
03.07.13
✎
14:42
|
(21) Ты не прав это что Всех студентов вручную им стоимость прописывать и считать всех за 5 лет на кыркуляторе
|
|||
23
Ilias54rus
03.07.13
✎
14:46
|
Меня же деканаты вместе с бухгалтерами сьедят тогда
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |