|
Установка пометки удаления на док. | ☑ | ||
---|---|---|---|---|
0
SeregaMW
27.09.11
✎
10:44
|
В цикле перебераю документы и по условию устанавливаю пометку на удаление документов.
Сообщить(РучнойДокумент.Номер); Пометка = Док.ПолучитьОбъект(); Пометка.УстановитьПометкуУдаления(Истина); В отладчике вижу что Пометка это всегда ссылка на документ. На втором документе выдает ошибку Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)! запуская повторно обработку ошибка выскакивает на следуюшем документе и так по анологии. |
|||
1
ZanderZ
27.09.11
✎
10:46
|
цикл то напиши полностью
|
|||
2
butterbean
27.09.11
✎
10:46
|
весь код давай
|
|||
3
SeregaMW
27.09.11
✎
10:47
|
Док = Документы.РеализацияТоваровУслуг.Выбрать(ДатаС, ДатаПо);
Пока Док.Следующий() Цикл Комментарий = Лев(Док.Комментарий,54); Комментарий =Сред(Комментарий,45,20); Если Комментарий = "ЗаказНаряд" тогда Если Док.Контрагент.Наименование = "ООО "+Символ(34)+" Автодин"+Символ(34) или Док.Контрагент.Наименование = "ООО"+Символ(34)+"Автодин"+Символ(34)+" - Автосалон" тогда НомерЗН=Лев(Док.Комментарий,66); НомерЗН= Сред(НомерЗН,57); ЗаказН = connection.Документы.ЗаказНаряд.Выбрать(ДатаС-1000000, ДатаПо+1000000); Пока ЗаказН.Следующий() Цикл Если ЗаказН.Номер = НомерЗН тогда Если ЗаказН.Товары.Количество()=0 тогда Пометка = Док.ПолучитьОбъект(); Пометка.УстановитьПометкуУдаления(Истина); прервать; КонецЕсли; Если (ЗаказН.ВидРемонта.Наименование ="Внутренний ремонт") тогда РучнойДокумент = Документы.ОперацияБух.СоздатьДокумент(); РучнойДокумент.Дата = Док.Дата; РучнойДокумент.Организация = Док.Организация; Проводка = РучнойДокумент.Движения.Хозрасчетный; Реализация = Док.ПолучитьОбъект(); Если Реализация.Проведен = Ложь тогда Иначе Реализация.Проведен = Ложь; Реализация.Записать(); КонецЕсли; РучнойДокумент.Комментарий = Док.Комментарий; РучнойДокумент.Записать(); Для каждого товар из Док.Товары Цикл ДокОперацияСсылка = РучнойДокумент.Ссылка; РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка; РегЗапись = РегХозрасчетный.Добавить(); РегЗапись.Период = Док.Дата; РегЗапись.Регистратор = ДокОперацияСсылка; РегЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Автодин"); РегЗапись.СчетДт =ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"); РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, 1, товар.Номенклатура); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, 2, Док.Склад); РегЗапись.КоличествоДт = товар.Количество; БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 1, товар.Номенклатура); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 2, Док.Склад); ТЗ=новый ТаблицаЗначений; Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.Субконто1, | ХозрасчетныйОбороты.Субконто2, | ХозрасчетныйОбороты.КоличествоОборот, | ХозрасчетныйОбороты.СуммаОборот, | ХозрасчетныйОбороты.СуммаОборотДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты КАК ХозрасчетныйОбороты | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ПО ХозрасчетныйОбороты.Субконто1 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.Субконто2 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.Субконто3 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.КорСубконто1 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.КорСубконто2 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.КорСубконто3 = РеализацияТоваровУслуг.Ссылка |ГДЕ | ХозрасчетныйОбороты.Счет = &Счет | И ХозрасчетныйОбороты.Субконто1 = &Субконто1 | И ХозрасчетныйОбороты.Субконто2 = &Субконто2"; Запрос.УстановитьПараметр("Субконто1",товар.Номенклатура); Запрос.УстановитьПараметр("Субконто2",Док.Склад); Запрос.УстановитьПараметр("Номер",Док.Номер); Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01")); ТЗ = Запрос.Выполнить().Выгрузить(); Для каждого цена из ТЗ Цикл переменная = РегЗапись.КоличествоДт*(Цена.суммаОборот/Цена.КоличествоОборот); прервать; КонецЦикла; РегЗапись.Сумма = переменная; РегХозрасчетный.Записать(); РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка; РегЗапись = РегХозрасчетный.Добавить(); РегЗапись.Период = Док.Дата; РегЗапись.Регистратор = ДокОперацияСсылка; РегЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Автодин"); РегЗапись.СчетДт =ПланыСчетов.Хозрасчетный.НайтиПоКоду("44.01"); РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05"); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, 1, Справочники.СтатьиЗатрат.НайтиПоНаименованию("Прочие расходы")); //РегЗапись.КоличествоДт = товар.Количество; БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 1, товар.Номенклатура); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 2, Док.Склад); РегЗапись.Сумма = переменная; РегХозрасчетный.Записать(); КонецЦикла; Сообщить(РучнойДокумент.Номер); Пометка = Док.ПолучитьОбъект(); Пометка.УстановитьПометкуУдаления(Истина); Пометка.Записать(); Продолжить; ИначеЕсли (ЗаказН.ВидРемонта.Наименование ="Дополнительное оборудование") тогда Если ЗаказН.Товары.Количество()=0 тогда Пометка = Док.ПолучитьОбъект(); Пометка.УстановитьПометкуУдаления(Истина); Пометка.Записать(); прервать; КонецЕсли; РучнойДокумент = Документы.ОперацияБух.СоздатьДокумент(); РучнойДокумент.Дата = Док.Дата; РучнойДокумент.Организация = Док.Организация; Проводка = РучнойДокумент.Движения.Хозрасчетный; Реализация = Док.ПолучитьОбъект(); Если Реализация.Проведен = Ложь тогда Иначе Реализация.Проведен = Ложь; Реализация.Записать(); КонецЕсли; РучнойДокумент.Комментарий = Док.Комментарий; Для каждого товар из Док.Товары Цикл ТЗ=новый ТаблицаЗначений; Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.Субконто1, | ХозрасчетныйОбороты.Субконто2, | ХозрасчетныйОбороты.КоличествоОборот, | ХозрасчетныйОбороты.СуммаОборот, | ХозрасчетныйОбороты.СуммаОборотДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты КАК ХозрасчетныйОбороты | ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ПО ХозрасчетныйОбороты.Субконто1 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.Субконто2 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.Субконто3 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.КорСубконто1 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.КорСубконто2 = РеализацияТоваровУслуг.Ссылка | И ХозрасчетныйОбороты.КорСубконто3 = РеализацияТоваровУслуг.Ссылка |ГДЕ | ХозрасчетныйОбороты.Счет = &Счет | И ХозрасчетныйОбороты.Субконто1 = &Субконто1 | И ХозрасчетныйОбороты.Субконто2 = &Субконто2"; Запрос.УстановитьПараметр("Субконто1",товар.Номенклатура); Запрос.УстановитьПараметр("Субконто2",Док.Склад); Запрос.УстановитьПараметр("Номер",Док.Номер); Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01")); ТЗ = Запрос.Выполнить().Выгрузить(); Для каждого цена из ТЗ Цикл Переменная = РегЗапись.КоличествоДт*(Цена.суммаОборот/Цена.КоличествоОборот); прервать; КонецЦикла; КонецЦикла; РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка; РегЗапись = РегХозрасчетный.Добавить(); РегЗапись.Период = Док.Дата; РегЗапись.Регистратор = ДокОперацияСсылка; РегЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Автодин"); РегЗапись.СчетДт =ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1"); РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, 1, товар.Номенклатура.НоменклатурнаяГруппа); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 1, товар.Номенклатура); БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 2, Док.Склад); РегЗапись.Сумма = переменная; РегХозрасчетный.Записать(); Сообщить(РучнойДокумент.Номер); Пометка = Док.ПолучитьОбъект(); Пометка.УстановитьПометкуУдаления(Истина); КонецЕсли; продолжить; КонецЕсли; КОнецЦикла; КонецЕсли; КонецЕсли; КонецЦикла; |
|||
4
DrShad
27.09.11
✎
10:52
|
(3) нет слов!
|
|||
5
unregistered
27.09.11
✎
10:52
|
(3) Жесть....
А вообще код работает правильно. Во внешнем цикле ты получаешь Док. Во внутреннем (перебор ЗаказНарядов) - ты этот Док несколько раз пытаешься удалить. |
|||
6
unregistered
27.09.11
✎
10:53
|
(3) Ехал бы ты обратно в свою Корею...
|
|||
7
Wobland
27.09.11
✎
10:53
|
Пометка = РучнойДокумент.ПолучитьОбъект(); ?
код не смотрел |
|||
8
Goggy
27.09.11
✎
10:55
|
Если Док.Контрагент.Наименование = "ООО "+Символ(34)+" Автодин"+Символ(34) или Док.Контрагент.Наименование = "ООО"+Символ(34)+"Автодин"+Символ(34)+" - Автосалон" тогда
дальше и читать не стал... |
|||
9
SeregaMW
27.09.11
✎
10:55
|
РучнойДокумент это док. который создается. Помечается на удаление реализация.
|
|||
10
butterbean
27.09.11
✎
10:56
|
ну как тут не вспомнить про 86...
|
|||
11
unregistered
27.09.11
✎
10:56
|
(9) Ну вот ты и помечаешь реализацию на удаление каждый раз во внутреннем цикле обхода ЗаказНарядов.
|
|||
12
unregistered
27.09.11
✎
10:57
|
(8) >> дальше и читать не стал...
А зря. Там еще много интересного :)) |
|||
13
DrShad
27.09.11
✎
10:58
|
(12) я бы так не сказал :)
|
|||
14
Wobland
27.09.11
✎
11:02
|
(13) как тебе: Документы.ЗаказНаряд.Выбрать(ДатаС-1000000, ДатаПо+1000000)
|
|||
15
Wobland
27.09.11
✎
11:05
|
а запрос-то работает? условие, если все субконты - конкретный документ
|
|||
16
Wobland
27.09.11
✎
11:06
|
Реализация.Проведен = Ложь;
Реализация.Записать(); Распроводка делается так: Реализация.Записать(РежимЗаписиДокумента.ОтменаПроведения) |
|||
17
SeregaMW
27.09.11
✎
11:07
|
(16) Спасибо за содержательное сообщение.
А вообще Пишу как умею ))) |
|||
18
SeregaMW
27.09.11
✎
11:09
|
(15) Запрос работает
|
|||
19
DrShad
27.09.11
✎
11:09
|
(17) за это хоть платят?
|
|||
20
unregistered
27.09.11
✎
11:15
|
(15) Запрос у него работает. Не работает соединение - из таблицы РеализацияТоваровУслуг ни чего не выбирается.
При внутреннем соединении результат запроса будет пустым. (18) Можешь из запроса соединение убрать. Написанное условие соединения всё равно ни когда не выполнится. |
|||
21
unregistered
27.09.11
✎
11:17
|
(17) >> А вообще Пишу как умею )))
Молодец! Так держать! Благодаря тебе у кого-то всегда будет заработок на маслице к хлебушку - за выгребание косяков. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |