Сравнение единиц измерения парадокс и 1с

1. user1619761 29.07.21 13:42 Сейчас в теме
Здравствуйте. Есть обработчик, добавил в него флажок Проверки единиц измерения, надо чтоб при его активации происходило сравнение ед изм 1с и парадокса, и все это выводилось в таблицу ошибок. Как сделать вывод этих данных в таблицу?

&НаКлиенте
Функция ПолучитьЕдИзм()
	
Если ПроверкаЕдИзмНоменклатуры Тогда	
	
ТекСтрТабОшибок =ТабОшибокЕдИзмНоменклатуры.Добавить();	
	
ДБФ= Новый XBase; 
	ДБФ.Кодировка=КодировкаXBase.OEM;
	
	Попытка
		ДБФ.ОткрытьФайл(ФайлДанных,,1);	
	Исключение
		Сообщить("Неудачная попытка открытия файла: " +  ОписаниеОшибки());
		Возврат 0;
	КонецПопытки;	
	
	Если ДБФ.КоличествоЗаписей()=0 Тогда
		Предупреждение("Пустой файл!!!");
		Возврат 0;
	КонецЕсли;	
	
ТекСтрТабОшибок.ЕдИзмПарадокс = СокрЛП(ДБФ.GOODEDIZM);
ТекСтрТабОшибок.ЕдИзм1С = СокрЛП(ВыбЕдИзмТов);

Если Не ТекСтрТабОшибок.ЕдИзмПарадокс = ТекСтрТабОшибок.ЕдИзм1С Тогда
	
	ТекСтрТабОшибок.РезультатПроверки = "Разные единицы измерения номенклатуры";
	
КонецЕсли;

КонецЕсли;

КонецФункции
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex_bob 246 29.07.21 14:04 Сейчас в теме
На клиенте таблица значений не поддерживается.
2 варианта;
1. Передать файл ДБФ на сервер и все остальное выполнять на сервере.
2. На клиенте использовать массив структур, а в конце вызвать серверную функцию, которая из массива структур заполнит таблицу значений.
3. FatPanzer 29.07.21 14:09 Сейчас в теме
(2) А где вы здесь видите таблицу значений на клиенте?
4. DJ_Codebase 29.07.21 14:09 Сейчас в теме
(3) Есть такое
ТекСтрТабОшибок =ТабОшибокЕдИзмНоменклатуры.Добавить();
7. FatPanzer 29.07.21 14:12 Сейчас в теме
(4)
ДанныеФормыКоллекция (FormDataCollection)
Добавить (Add)
Синтаксис:
Добавить()
Возвращаемое значение:
Тип: ДанныеФормыЭлементКоллекции.
Описание:
Добавляет элемент в конец коллекции и возвращает его в качестве результата метода.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
8. DJ_Codebase 29.07.21 14:16 Сейчас в теме
(7) да в любом случае можно обойтись и без ТЗ, и без сервера. XBase доступен на клиенте. Достаточно в соответствие добавлять "Строка:Значение", да хот в массив
10. FatPanzer 29.07.21 14:17 Сейчас в теме
(8) Да дело в том, что автор не пишет о том, что у него не получается, или какую ошибку выдает. Он просто написал код, не запускал его и дал его нам на проверку со словами "как правильно сделать"...
И таблицу значения он не использует, и не в этом его проблема вообще.
11. DJ_Codebase 29.07.21 14:19 Сейчас в теме
(10) осталось понять в какой строке искать правильность))
5. alex_bob 246 29.07.21 14:10 Сейчас в теме
6. FatPanzer 29.07.21 14:11 Сейчас в теме
(5) Нет. На скриншоте ДанныеФормыКоллекция, а не ТаблицаЗначений. И вполне себе доступная на клиенте.
9. alex_bob 246 29.07.21 14:16 Сейчас в теме
(1) Так в чем вопрос-то? Коллега утверждает (между строк), что у Вас всё должно работать.
12. user1619761 29.07.21 14:22 Сейчас в теме
(9) Вопрос в том, что я запускал обработчик ,включал флажок, но увы, нужных мне данных даже через Сообщить () не получал. И в режиме отладки в эту функцию не входит. Значит что то не так сделал
13. DJ_Codebase 29.07.21 14:25 Сейчас в теме
(12) Вот это вот что такое?
ТекСтрТабОшибок.ЕдИзмПарадокс = СокрЛП(ДБФ.GOODEDIZM);
ТекСтрТабОшибок.ЕдИзм1С = СокрЛП(ВыбЕдИзмТов);
ДБФ.GOODEDIZM - сначала нужно спозиционироваться на строку
ВыбЕдИзмТов - откуда эта переменная?
15. FatPanzer 29.07.21 14:28 Сейчас в теме
(13) Вооооот... А то докопались до несуществующей таблицы значений...
18. DJ_Codebase 29.07.21 14:32 Сейчас в теме
(15) Да бес скриншот меня попутал))
16. user1619761 29.07.21 14:28 Сейчас в теме
(13) ВыбЕдИзмТов это реквизит из формы, имеет тип данных СправочникСсылка.КлассификаторЕдиницИзмерения,

ТекСтрТабОшибок.ЕдИзмПарадокс = СокрЛП(ДБФ.GOODEDIZM); - это единицы измерения из файла
20. DJ_Codebase 29.07.21 14:34 Сейчас в теме
(16)
= СокрЛП(ДБФ.GOODEDIZM); - это единицы измерения из файла

Сокращаете с ЛП сразу все единицы за раз?
21. FatPanzer 29.07.21 14:34 Сейчас в теме
(16)
ТекСтрТабОшибок.ЕдИзмПарадокс = СокрЛП(ДБФ.GOODEDIZM); - это единицы измерения из файла
Которая из 100500 штук, которые находятся в этом файле?
user1619761; +1 Ответить
22. nomad_irk 76 29.07.21 14:36 Сейчас в теме
(16)У вас в коде нет попытки чтения значения из *.dbf, что вы там собираетесь выводить куда-либо?
user1619761; +1 Ответить
37. user1619761 29.07.21 15:42 Сейчас в теме
(2)
(3)
(13)
(22)
Коллеги, всем спасибо за помощь!!! =)
14. alex_bob 246 29.07.21 14:28 Сейчас в теме
(12) А откуда функция вызывается?
17. user1619761 29.07.21 14:30 Сейчас в теме
(14)Из этой процедуры
&НаКлиенте
Процедура Загрузить(Команда)
	// Вставить содержимое обработчика.
	
ЗагрузитьИзDBF();
ПолучитьЕдИзм();

	
КонецПроцедуры
Показать
19. FatPanzer 29.07.21 14:33 Сейчас в теме
(17) Мдя... Почему именно Функция? Это же процедура. Почему Получить? Если это Проверить...
23. alex_bob 246 29.07.21 14:39 Сейчас в теме
(20) (21) Коллеги, до этого еще надо дойти,
И в режиме отладки в эту функцию не входит.
user1619761; +1 Ответить
24. FatPanzer 29.07.21 14:40 Сейчас в теме
(23) БЛДЖАД!!! Пошел-ка я отсюда...
user1619761; +1 Ответить
25. DJ_Codebase 29.07.21 14:43 Сейчас в теме
(23) Да... уж. Видимо обработчик события не повесил даже...
user1619761; +1 Ответить
26. user1619761 29.07.21 15:02 Сейчас в теме
(22)
(23)
(24)
(25)
Дописал код, теперь входит в функцию нормально, и цикл проходит . Но в этой переменной почему то пустое значение: ТекСтрТабОшибок.ЕдИзм1С = СокрЛП(ВыбЕдИзмТов);

&НаКлиенте
Функция ПолучитьЕдИзм()
	
Если ПроверкаЕдИзмНоменклатуры Тогда	
	
ТекСтрТабОшибок =ТабОшибокЕдИзмНоменклатуры.Добавить();	
	
ДБФ= Новый XBase; 
	ДБФ.Кодировка=КодировкаXBase.OEM;
	
	Попытка
		ДБФ.ОткрытьФайл(ФайлДанных,,1);	
	Исключение
		Сообщить("Неудачная попытка открытия файла: " +  ОписаниеОшибки());
		Возврат 0;
	КонецПопытки;
	
	Попытка
		ТекНом="9999999999999999-999789!№99999999"; // невозможное значение	
		
		Для сч = 1 по ДБФ.КоличествоЗаписей() Цикл    
			ОбработкаПрерыванияПользователя();
			Состояние("Загрузка файла DBF...Загружено "+сч+" записей из "+ДБФ.КоличествоЗаписей());
			ДБФ.Перейти(сч);   
						
			
			Если (ДБФ.VIDDOC=14) Тогда //Ед.Изм.
				VIDDOC = 14;
				
		КонецЕсли;		
				
	Если ДБФ.КоличествоЗаписей()=0 Тогда
		Предупреждение("Пустой файл!!!");
		Возврат 0;
	КонецЕсли;	
	
ТекСтрТабОшибок.ЕдИзмПарадокс = СокрЛП(ДБФ.GOODEDIZM);
ТекСтрТабОшибок.ЕдИзм1С = СокрЛП(ВыбЕдИзмТов);

Если Не ТекСтрТабОшибок.ЕдИзмПарадокс = ТекСтрТабОшибок.ЕдИзм1С Тогда
	
	ТекСтрТабОшибок.РезультатПроверки = "Разные единицы измерения номенклатуры";
	
КонецЕсли;
КонецЦикла;

Исключение  
КонецПопытки;		
 
КонецЕсли;
Возврат ТекСтрТабОшибок;
КонецФункции
Показать
27. alex_bob 246 29.07.21 15:06 Сейчас в теме
Вы СокрЛП применяете к ссылке. Тогда уж используйте Наименование или Код
user1619761; +1 Ответить
28. FatPanzer 29.07.21 15:07 Сейчас в теме
(27) И что? От этого она становится пустой? Или вы про неявную типизацию не в курсе?
user1619761; +1 Ответить
29. DJ_Codebase 29.07.21 15:11 Сейчас в теме
(28) Верно. Применится к основному представлению
user1619761; +1 Ответить
30. DJ_Codebase 29.07.21 15:12 Сейчас в теме
(27) вот бы еще знать что за зверь такой ВыбЕдИзмТов и где он инициализирован
user1619761; +1 Ответить
31. FatPanzer 29.07.21 15:15 Сейчас в теме
(30)
ВыбЕдИзмТов это реквизит из формы, имеет тип данных СправочникСсылка.КлассификаторЕдиницИзмерения

Все же просто - вряд ли в таблице колонка ЕдИзм1С имеет такой же тип...
user1619761; +1 Ответить
32. user1619761 29.07.21 15:19 Сейчас в теме
(31) Ну тут такая тема : в обработчике выбирается дбф файл ,и надо сравнить ед изм из дбф файла с ед изм из СправочникСсылка.КлассификаторЕдиницИзмерения 1С. В дбф файле ЕдИзм1с отсутствует вообще.
33. DJ_Codebase 29.07.21 15:19 Сейчас в теме
(31)
вряд ли в таблице колонка ЕдИзм1С имеет такой же тип...

естественно, на скрине там тип - строка. Вот она и пустая
user1619761; +1 Ответить
34. user1619761 29.07.21 15:21 Сейчас в теме
(33) точно,забыл тип поменять на СправочникСсылка. Спасибо
35. DJ_Codebase 29.07.21 15:23 Сейчас в теме
(34) И коллег, кто тебе помогал не забудь поблагодарить ;-)
user1619761; +1 Ответить
36. user1619761 29.07.21 15:26 Сейчас в теме
(35) это само собой ))) Единственное,изменил значение на СправочникСсылка, но оно так же пустое остается.
Прикрепленные файлы:
38. DWZ2 31.07.21 08:13 Сейчас в теме
Если этот ТОТ парадокс, о котором я думаю, то формат его файла вовсе не dbf. Или используется промежуточная выгрузка в dbf?
39. user1619761 02.08.21 08:59 Сейчас в теме
(38) промежуточная выгрузка, все верно
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот