powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / выборка журналарасчетво
15 сообщений из 15, страница 1 из 1
выборка журналарасчетво
    #36670515
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Возникта необходирмость выгрузить из ЗИК журнал расчетов.
Версия 7.7. Выгрузку пишу на Дельфи.

сделал такой код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  ole_1C_q:=ole_1C.CreateObject('Запрос');

  if ole_1C_q.выполнить(s) <>  0  then
  begin
        while ole_1C_q.Группировка('Сотрудник') =  1  do
        begin
        // получаю все значения реквизитов запроса
         end;




Есть в запросе реквизит типа
ЖурналРасчетов.Зарплата.ВидРасч

Недопонимаю, как получить текстовое название расчета.


Подскажите :-)

Спасибо
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36670682
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любой объект имеет свой синоним который в отдельных случаях автоматически получается а в некоторых необходимо получить либо "Наименование" объекта либо воспользоваться одной из строковых функций она уже и приведёт к строке (как вариант - СокрЛП())

запросом вы получате сам объект а дальше уже решаете что из этого объекта вам использовать для ваших нужд

кстати не рекомендовал бы использовать наименование (хотя видов расчета это не сильно актуально) для любых синхронизаций... необходима уникальность
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36670993
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmen,

Посмотрел, как в конфигурации это делается. Сделал так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  sp_raschet:= ole_1c.createobject('Справочник.ВидыРасчетов');
  comp:=ole_1c_q.ВидРАсчета;
  if sp_raschet.Найтипореквизиту('РАсчет',comp, 0 ) =  1  then
   begin
         self.caption:=sp_raschet.Наименование;
   end
   else
   begin
         s:=ole_1c.Метаданные.Видрасчета(comp.Код).Представление;
   end

Но в такой констукции все время отрабатывает второй вариант условия и s ничему не равна.
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671014
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оле не работает с объектными (ссылочными) данными т.е. вам в НайтиПоРеквизиту надо передавать текст (проверьте так ли это) плюс в самом объекте (справочнике) в котором ищете должен стоять признак того что по этому реквизиту можно отбирать (галочка в конфигураторе) ну и само собой Код в справочнике (по второй ветке) должен быть согласно номеру вида расчета если уж таким образом (через метаданые) хотите его получить
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671035
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmen,

в справочнике видов расчета в реквизите РАСЧЕТ стоит галка ОТБОР ПО РЕКВИЗИТУ.
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671036
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671037
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,

Код: plaintext
1.
2.
3.
comp:=ole_1c_q.видрасч;
self.caption:=comp.код;
self.caption:=comp.наименование;

в self.caption ничего не выводится по всей выборке
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671051
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLAndrewVL,

Код: plaintext
1.
2.
3.
comp:=ole_1c_q.видрасч;
self.caption:=comp.код;
self.caption:=comp.наименование;

в self.caption ничего не выводится по всей выборке

что есть результат "ole_1c_q.видрасч" ? ещё раз общая схема такова - получаем запросом текст\число и по этим уже данным ищем в выборке по объекту а если у вас в ole_1c_q.видрасч - ссылка на объект то там ничего и не будет
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671056
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в дельфи не силен но могу предполагать по 3му посту (если полный код приведен) что вы создали объёкт справочника и не спозиционировавшись на конкретном элементе что-то пытаетесь из него получить для поиска по реквизиту в таком же объекте справочнике

не понятна логика сего действия даше ошибочного

общая схема - получаем текстовый идентификатор (код, наименование, значение реквизита типа число\строка ) и по нему уже ищем в созданном для поиска объекте необходимого вида

т.е. в 3м посте "ole_1c_q.ВидРАсчета" должен содержать текст... проверьте это
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671083
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmen
что есть результат "ole_1c_q.видрасч" ? ещё раз общая схема такова - получаем запросом текст\число и по этим уже данным ищем в выборке по объекту а если у вас в ole_1c_q.видрасч - ссылка на объект то там ничего и не будет

Видрасч = журналрасчетов.зарплата.видрасч

получается что это ссылка на объект
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671087
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmenя в дельфи не силен но могу предполагать по 3му посту (если полный код приведен) что вы создали объёкт справочника и не спозиционировавшись на конкретном элементе что-то пытаетесь из него получить для поиска по реквизиту в таком же объекте справочнике

не понятна логика сего действия даше ошибочного

общая схема - получаем текстовый идентификатор (код, наименование, значение реквизита типа число\строка ) и по нему уже ищем в созданном для поиска объекте необходимого вида

т.е. в 3м посте "ole_1c_q.ВидРАсчета" должен содержать текст... проверьте это

текст полный.

т.е до
Код: plaintext
if sp_raschet.Найтипореквизиту('РАсчет',comp, 0 ) =  1  then

что то должно быть?
А что? :-)
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671467
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLLast1Cmenя в дельфи не силен но могу предполагать по 3му посту (если полный код приведен) что вы создали объёкт справочника и не спозиционировавшись на конкретном элементе что-то пытаетесь из него получить для поиска по реквизиту в таком же объекте справочнике

не понятна логика сего действия даше ошибочного

общая схема - получаем текстовый идентификатор (код, наименование, значение реквизита типа число\строка ) и по нему уже ищем в созданном для поиска объекте необходимого вида

т.е. в 3м посте "ole_1c_q.ВидРАсчета" должен содержать текст... проверьте это

текст полный.

т.е до
Код: plaintext
if sp_raschet.Найтипореквизиту('РАсчет',comp, 0 ) =  1  then

что то должно быть?
А что? :-)

строкой выше у вас что ? то что в текущей строке это уже потом важно
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36671760
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last1Cmen,

написал такую обработку

Код: plaintext
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.
	Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = 
	"//{{ЗАПРОС(РасчетныеЛистки)
	|Период с '01.01.2010' по '31.01.2010';
	|Сотрудник				= ЖурналРасчетов.Зарплата.Объект;
    |ФизЛицо				= ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент;
|Расчет					= ЖурналРасчетов.Зарплата.ВидРасч;	
|ОсновнойЭлемент		= ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент;

|Подразделение			= ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент.Подразделение;

|ТекущийДокумент		= ЖурналРасчетов.Зарплата.ТекущийДокумент; 
|Результат				= ЖурналРасчетов.Зарплата.Результат;
|ДниВЖурнале			= ЖурналРасчетов.Зарплата.Дни;
|ЧасыВЖурнале			= ЖурналРасчетов.Зарплата.Часы;  
|Действие               = ЖурналРасчетов.Зарплата.ПериодДействия;
|Функция Сумма				= Сумма(Результат);
|Функция СуммаНачисления	= Сумма(Результат)	когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
|Функция СуммаУдержания		= Сумма(Результат)	когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=1);
|Функция СуммаПрочего		= Сумма(Результат)	когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ДоходыВНатуральнойФорме)=1);
|Функция СуммаВыплаты		= Сумма(Результат)	когда (Расчет = ВидРасчета.ВыплатаЗарплаты);
|Функция СуммаВыплатыШтрафа	= Сумма(Результат)	когда (Расчет = ВидРасчета.КомпенсацияЗаПросрочкуЗарплаты);
|Функция ВозвратВКассу		= Сумма(Результат)	когда (Расчет = ВидРасчета.Возврат);
|Функция ДолгРаботников		= Сумма(Результат)	когда (((Расчет=ВидРасчета.НачальноеСальдоЗадолженность)или(Расчет=ВидРасчета.НачальноеСальдоОкругления)или(Расчет=ВидРасчета.НачальноеСальдоПереплатаНДФЛ)) и (Результат < 0));
|Функция ДолгПредприятия	= Сумма(Результат)	когда (((Расчет=ВидРасчета.НачальноеСальдоЗадолженность)или(Расчет=ВидРасчета.НачальноеСальдоОкругления)или(Расчет=ВидРасчета.НачальноеСальдоПереплатаНДФЛ)) и (Результат > 0));
|Функция ЗадолженностьПредприятия		= Сумма(Результат)	когда ((Расчет=ВидРасчета.НачальноеСальдоЗадолженность) и (Результат > 0));
|Функция СальдоОкругленияРаботников		= Сумма(Результат)	когда ((Расчет=ВидРасчета.НачальноеСальдоОкругления) и (Результат < 0));
|Функция СальдоОкругленияПредприятия	= Сумма(Результат)	когда ((Расчет=ВидРасчета.НачальноеСальдоОкругления) и (Результат > 0));
|Функция ПереплатаНДФЛПредприятия		= Сумма(Результат)	когда ((Расчет=ВидРасчета.НачальноеСальдоПереплатаНДФЛ) и (Результат > 0));
|Функция Дни				= Сумма(ДниВЖурнале);
|Функция Часы				= Сумма(ЧасыВЖурнале);
|Группировка ФизЛицо Без Групп;
	|Группировка Расчет упорядочить по Расчет.Очередность;  
	|Группировка Сотрудник Без Групп;
	|Группировка ТекущийДокумент упорядочить по ТекущийДокумент.ДатаДок;";
	
	
	
	Если Запрос.Выполнить(ТекстЗапроса)= 0  Тогда
		глСтатусСтрока(Контекст,"");
		Возврат;
	КонецЕсли;

Пока Запрос.группировка( 1 )= 1  Цикл	
			Расчет = Запрос.Расчет;
			zzz = глПредставлениеВидаРасчета(Расчет);
			сообщить(запрос.сотрудник);	
			сообщить("Вид расчета = "+zzz);
			сообщить("Код сотрудника = "+запрос.сотрудник.код);
			сообщить("Резальтат = "+запрос.результат);
			сообщить("---------------------------");
	
	конеццикла;


Посмотрел результат.
почему-то поле ФИЗЛИЦО в результате выполнения запроса пустое.
Все данные по челу в ОСНОВНОЙ ЭЛЕМЕНТ.

И нет ивнформации в поле Расчет.

Хотя в первоначальном варианте в поле РАСЧЕТ были данные. но что-то изменил и.....
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36672379
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще в лучших домах Лондона и Парижа появилась мода
в ЗиК группировать не по ЖурналРасчетов.Зарплата.Объект
а по : ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент
хотя конечно смотря что надо ...
...
Рейтинг: 0 / 0
выборка журналарасчетво
    #36672615
Last1Cmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм... насколько я понял это речь не про укр. ЗиК, у нас - не основной элемент а ФизическоеЛицо сразу

ну и вид расчета соответсвенно применимо к самому объекту (сотруднику) а не физлицу следовательно если верхний уровень группировок будет физлицом то и возможна ситуация с пустыми видами расчета... не проверял но думаю так и будет
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / выборка журналарасчетво
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]