Обмен между 1С 7.7 и 1С 8 через "ЗначениеВСтрокуВнутр"

0. 99 22.03.12 16:30 Сейчас в теме
Функция разбора строки, содержащей таблицу значений, полученной из 1С 7.7 методом "ЗначениеВСтрокуВнутр"

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. NPMar 22.03.12 16:30 Сейчас в теме
Спасибо большое! Особенно за то, что не нужно копить балл для скачиания. Думаю, что мне это пригодится при переходе на восмерку, которую только буду изучать.
2. AvalonE2008 99 23.03.12 00:55 Сейчас в теме
Пожалуйста, надеюсь поможет. ОБРАТИТЕ ВНИМАНИЕ, в публикации есть опечатки. Функция для работы со строкой полученной посредство ЗначениеВСтрокуВнутр а не ЗначениеВСтроку.
3. avcherkasov 101 16.10.13 11:47 Сейчас в теме
Большое спасибо, очень пригодилось.
4. AvalonE2008 99 16.10.13 12:10 Сейчас в теме
5. bes-kkm 06.02.14 18:13 Сейчас в теме
6. user636219_dmitriy.gomzin 13.12.16 16:27 Сейчас в теме
Спасибо большое. пригодилось.
7. v.l. 430 16.07.19 20:09 Сейчас в теме
Автор, спасибо.
Прикрутил семерочные ДБФ базы как внешний источник данных, и в некоторых местах таблица значений с формы сохранялась как строка неограниченной длины (привет таблице 1SBLOB).

И надо было распарсить... Восьмерочная процеду ЗначениеИзСтрокиВнутр не понимала семерочный формат, пытался парсить, разбивать на строки, заменять литералы "0", на пустые строки, высчитывать фигурные скобки... Много мороки.

Немного преобразовал, чтобы не писать временный файл, обошелся
ЧтениеТХТ    = Новый ТекстовыйДокумент;
ЧтениеТХТ.ДобавитьСтроку(Адрес);

Соответственно чтение строки в цикле Для:
КолвоСтрок = ЧтениеТХТ.КоличествоСтрок();
Для Сч = 2 По КолвоСтрок Цикл
	Строка = ЧтениеТХТ.ПолучитьСтроку(Сч);

Еще раз спасибо!
8. alexander-bu 1 21.11.20 09:46 Сейчас в теме
Автор, спасибо.
Нашел ошибку:
В файле, полученном из 7.7, нет запятой после последнего значения в колонке:

{"Код","Код","1","0","0",{"S","0","0","0","0","0"},"","0",
{
{"S","0","0","0","0","0","8200000000"},
{"S","0","0","0","0","0","8000000000"}
}

Поэтому должно быть условие:

			//После последнего значения нет запятой, поэтому надо срезать справа 2 символа, а не 3
			Если Прав(Строка, 1) = "," Тогда
				Значение = Лев(Строка, СтрДлина(Строка)-3);
				Значение =Прав(Значение, СтрДлина(Строка)-29);
			Иначе
				Значение = Лев(Строка, СтрДлина(Строка)-2);
				Значение =Прав(Значение, СтрДлина(Строка)-28);
			КонецЕсли;	
Показать
9. babybu 28 04.02.21 12:27 Сейчас в теме
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Руководитель проектов 1С
Москва
зарплата от 200 000 руб.
Полный день

Консультант-аналитик 1С
Нижний Новгород
зарплата от 55 000 руб. до 100 000 руб.
Полный день

Аналитик 1С ERP
Санкт-Петербург
зарплата до 200 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Программист 1С
Казань
зарплата от 105 000 руб.
Полный день