Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Почему не записываются виды расчетов? (http://forums.kuban.ru/f1040/pochemu_ne_zapisyvayutsya_vidy_raschetov-4120028.html)

Vinni_P 27.04.2013 14:42

Почему не записываются виды расчетов?
 
Пишу обработку:
Выб = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.Выбрать();
Пока Выб.Следующий() Цикл
Если СокрЛП(Выб.Наименование) = "" или СокрЛП(Выб.НаименованиеДоп) = "" Тогда Продолжить; КонецЕсли;
Об = Выб.ПолучитьОбъект();
Наим1 = СокрЛП(Выб.Наименование);
Наим2 = СокрЛП(Выб.НаименованиеДоп);
Об.Наименование = Наим2;
Об.НаименованиеДоп = Наим1;
Об.Записать();
КонецЦикла;
Всё это надо для простого изменения расчетной ведомости и прочих отчётов на английские наименования.
Для этого просто добавил к типовому виду расчета реквизит "НаименованиеДоп" для английского наименования.
После выполнения этой обработки не происходит ничего...
Хотя в отладчике показывает изменённые виды расчетов.
Люди добрые, если кто уже победил сию проблему, поделитесь плиз...

Vinni_P 29.04.2013 16:19

неужели никто программно не записывал виды расчетов???

real 29.04.2013 17:39

Раз знакомы с понятием отладчик, значит делайте трассировку, смотрите где сбоит. Желательно в попытку обернуть запись.

Vinni_P 30.04.2013 06:21

В том то и дело, что в отладчике записывает объект, и показывает его с изменёнными реквизитами. А когда выхожу в 1С, смотрю - а он как был так и остался.
При этом ошибок никаких не выдаёт...

Гена 30.04.2013 07:28

я не знаю языка восьмёрки и поправьте меня, если я не прав...

Об = Выб.ПолучитьОбъект(); // здесь мы позиционируемся на элементе справочника

почему же тогда условие Если-КонецЕсли, работающее с конкретными реквизитами элемента справочника, стоит [b]до[/b] позиционирования на данный элемент?

roma n 30.04.2013 09:56

3-Vinni_P > Транзакция
4-Гена > позиционирование у автора происходит нормально в выборке методом Следующий()

Vinni_P 01.05.2013 06:13

5-roma n
Пробовал и с транзакцией, и без. Даже пробовал без начала зафиксить - естественно выдало ошибку. Думаю мож релиз такой(8.2.15.289)? На другом еще не пробовал.

МимохожийОднако 01.05.2013 08:35

а запросом никак?

Ткачик 01.05.2013 09:30

Я, как и Гена, тоже не знаток восьмерки, но в 7.7 мне бы такая конструкция не понравилась.

По крайней мере, в той части кода, которую привел автор: он там меняет наименование, а по [b]какому параметру[/b] у него идет выборка? Если по наименованию, то ясный пень, что она сбивается. Причем, по задумке у него НаименованиеДоп и НаименованиеДоп просто меняются местами, если в результате сбоя выборки происходит [b]два[/b] прохода по каждому элементу - вуаля, впечатление, что "не происходит ничего".

Надо включить выборку по порядку [b]кодов[/b], или как там это в снеговике называется.

Гена 01.05.2013 10:58

(8) логично... если перебор по наименованию в цикле, то рус на лат изменится, а вот наоборот - нет, т.к. лат ложится выше по алфавиту...

можно проверить, вставив счётчик...

Гена 01.05.2013 11:04

например, дошло до элемента Gena, записали как Гена... который лёг ниже в справочнике по наименованияю... в конце концов перебором выйдем на Гена и сделаем Gena...

в результате, как был Gena, так и остался...

VZ 01.05.2013 15:18

8-Ткачик > Так и указываешь порядок выборки: "Код" или "Наименование".
10-Гена > Не выеживайся. Стандартный прием без манипуляции с индексами: пишешь отобранное в список (вариант: отбираешь запросом, если отбирать надо много и хитрО, далее пользуешься результатом запроса заместо списка). В список/запрс ссылки, естественно. Затем проходишь по списку, вызывая объект для изменения и записи.

_U2 01.05.2013 20:16

Ну вот взял почти Ваш кусок кода:-))
Закоментарил все что связано с "НаименованиеДоп",
у меня его нет..просто к наименованию прибавил "?"
Сработало...:-))

Выб = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.Выбрать();
Пока Выб.Следующий() Цикл
//Если СокрЛП(Выб.Наименование) = "" или СокрЛП(Выб.НаименованиеДоп) = "" Тогда Продолжить; КонецЕсли;
Об = Выб.ПолучитьОбъект();
Наим1 = СокрЛП(Выб.Наименование);
//Наим2 = СокрЛП(Выб.НаименованиеДоп);
Об.Наименование = "?"+Наим1;

//Об.НаименованиеДоп = Наим1;
Об.Записать();
//
КонецЦикла;
Сообщить("Конец");

Ткачик 01.05.2013 20:39

(12) "[em]Сработало...:-))[/em]" - дык, добавление "?" не должно сбивать выборку. Разве что наименование состоит из одних только символов с ASCII-кодом меньше 63, т.е. цифр и знаков препинания.

_U2 01.05.2013 21:02

(13)..Дыыы вроде...в снеговике порядок выборки не зависит от наименования или кода, если Вы специально не укажете
Выбрать(,,,"Нименование") или Выбрать(,,,"Код")

Ткачик 01.05.2013 21:14

(14) А разве в снеговике нет возможности (как в клюшках у справочника, например) задать в конфигураторе основное представление - либо "В виде кода", либо "В виде наименования"? ИМХО, именно от этого и зависит порядок выборки по умолчанию.

_U2 01.05.2013 21:30

(15).....а як же, есть, в виде кода или наименования, "свичик" при описании объекта стоит...:-))
...Ну не наю, если дело в этом...ну пусть сделает Выбрать(,,,"Код"), тогда наименование точно не причем

Viking 01.05.2013 22:02

я бы выборку сделал запросом и выгрузил в тз... потом по строкам тз получал объект и менял его.

VZ 01.05.2013 22:03

16-_U2 > Дурной тон: строить свой код, исходя из приятного себе [b]предположения[/b]...

_U2 01.05.2013 22:30

(то 18)...код не мой и я не говорил, что он мне нравится, вопрос в другом: почему он не работает...:-))

VZ 01.05.2013 22:49

19-_U2 > Вот чтоб не мучатся с этим вопросом (при преобразовании индексируемых полей), не вспоминать свой код, и не тревожить склероз, и не говорить "Ой!", когда выяснется истинный индекс, и рекомендуется (горячо) метод "сначала выбери, потом измени" (см.11) :)

vah1 05.05.2013 15:22

(0) не лез ты бы куда не надо, внешним отчетом ведомость сформируй как просили. завтра аудиторы придут, гб понятно в декретный отпуск - как потом назад возвращать станешь, опер. инфу за за пару дней слабо ввесети, кот операторы в три смены вводили круглосуточно

vah1 05.05.2013 15:29

+ сколько не ваял универсальных отчетов - никогда ни кому не пригодилось, хочу мол в третьей строчке 2600 - на = 2600, главное шоп отчет запускался


Текущее время: 22:10. Часовой пояс GMT +3.