Имя: Пароль:
1C
 
Как получить картинка из Библиотеки по имени
0 Chessmas
 
25.10.23
23:29
Нужно получить картинку из Библиотеки программно по названию. Написал функцию: 

Функция ПолучитьКартинкуПоИмени(ИмяКартинки)       
    Для Каждого ОбКартинка Из Метаданные.ОбщиеКартинки Цикл
        Если ОбКартинка.Имя = ИмяКартинки Тогда            
            Картинка = ОбКартинка.Картинка;
        КонецЕсли;
    КонецЦикла;          
    Возврат Картинка;
КонецФункции


но она не работает. Вылетает ошибка. Как исправить? 
1 Волшебник
 
25.10.23
23:28
Функция ПолучитьКартинкуПоИмени(ИмяКартинки)	   
	Для Каждого ОбКартинка Из Метаданные.ОбщиеКартинки Цикл
		Если ОбКартинка.Имя = ИмяКартинки Тогда			
			Возврат ОбКартинка.Картинка;
		КонецЕсли;
	КонецЦикла;		  
КонецФункции
3 Chessmas
 
26.10.23
00:21
Не сработало...
4 KoZuB
 
26.10.23
04:05
(3) Возврат Метаданные.ОбщиеКартинки[ИмяКартинки];
5 Web00001
 
26.10.23
06:03
Если получил ошибку при выполнении кода, никогда и ни при каких обстоятельствах, не пиши текст ошибки. Сами пусть догадаются, программисты они или где? Самому его читать тоже не обязательно. Там вообще все непонятно, зачем время тратить.
6 Волшебник
 
26.10.23
07:34
(3) Вы всё врёте
7 Donkey_hot
 
26.10.23
08:06
А чем (1) концептуально отличается от (0) кроме отсутствия ненужных итераций?
8 Волшебник
 
26.10.23
08:15
(7) Оно работает
9 Мимохожий Однако
 
26.10.23
08:28
(1) Оператор Возврат прерывает цикл или цикл продолжает работать? Я беру случай, когда есть несколько строчек в коллекции при обходе, а не конкретно этот.
10 Волшебник
 
26.10.23
08:33
(9) прерывает
11 ass1c
 
26.10.23
08:59
Картинка = Метаданные.ОбщиеКартинки.Найти("Сервис1СПАРКРиски48");
Картинка = Метаданные.ОбщиеКартинки["Сервис1СПАРКРиски48"];
Картинка = БиблиотекаКартинок["Сервис1СПАРКРиски48"];
12 Волшебник
 
26.10.23
09:36
(11) Это скучно
13 Chessmas
 
26.10.23
10:22
Мне надо расставить фигуры на шахматной доске:
        Для Каждого Поле Из Фигура Цикл               
            Область = Доска.Область(Поле.X, Поле.Y);    
        //    Если Поле.Адрес = Область.Текст Тогда
        //        Область.Картинка = ПолучитьКартинкуПоИмени(Поле.Название);
        //КонецЕсли;
            Если Поле.Название = "БелаяПешка" Тогда  Область.Картинка = БиблиотекаКартинок.БелаяПешка;
            КонецЕсли;
            Если Поле.Название = "БелаяЛадья" Тогда  Область.Картинка = БиблиотекаКартинок.БелаяЛадья;
            КонецЕсли;
            Если Поле.Название = "БелыйКонь" Тогда  Область.Картинка = БиблиотекаКартинок.БелыйКонь;
            КонецЕсли;
            Если Поле.Название = "БелыйСлон" Тогда  Область.Картинка = БиблиотекаКартинок.БелыйСлон;
            КонецЕсли;
            Если Поле.Название = "БелыйФерзь" Тогда  Область.Картинка = БиблиотекаКартинок.БелыйФерзь;
            КонецЕсли;
            Если Поле.Название = "БелыйКороль" Тогда  Область.Картинка = БиблиотекаКартинок.БелыйКороль;
             КонецЕсли;
            Если Поле.Название = "ЧернаяПешка" Тогда  Область.Картинка = БиблиотекаКартинок.ЧернаяПешка;
            КонецЕсли;                                                                                
            Если Поле.Название = "ЧернаяЛадья" Тогда  Область.Картинка = БиблиотекаКартинок.ЧернаяЛадья;
            КонецЕсли;
            Если Поле.Название = "ЧерныйКонь" Тогда  Область.Картинка = БиблиотекаКартинок.ЧерныйКонь;
            КонецЕсли;
            Если Поле.Название = "ЧерныйСлон" Тогда  Область.Картинка = БиблиотекаКартинок.ЧерныйСлон;
            КонецЕсли;
            Если Поле.Название = "ЧерныйФерзь" Тогда  Область.Картинка = БиблиотекаКартинок.ЧерныйФерзь;
            КонецЕсли;
            Если Поле.Название = "ЧерныйКороль" Тогда  Область.Картинка = БиблиотекаКартинок.ЧерныйКороль;
             КонецЕсли;
        
        КонецЦикла;                              
    
Так расставляются в начальной позиции правильно, а когда сделаю ходы и сохраню ТЗ Фигура, при восстановлении на доске не пойми что. Думаю попробовать сортировать ТЗ по координатам...
А когда закомментирую перебор названий и раскомментирую обращение к функции на доске ни одной фигуры...
14 Chessmas
 
26.10.23
10:42
(4) Несоответствие типов
15 Волшебник
 
26.10.23
10:45
(13)
Область.Картинка = БиблиотекаКартинок[Поле.Название];
16 Галахад
 
26.10.23
10:49
(13) Ну хоть один человек нормальным делом занимается, а не этот вот всё.
17 Chessmas
 
26.10.23
10:58
(16) Приходится, я законченный шахматист - заочник. В классику из-за нейросетей смысла нет играть когда ничейный результат гарантирован на 98%, придумали стоклеточные. Можно купить 2 комплекта шахмат и сделать доску, но уже привычнее на компе анализировать, да и с больными руками (ДЦП) физическая доска не удобна. Решил в 1С сделать себе базу - ходилку...
18 Chessmas
 
26.10.23
11:00
(15) Большое спасибо! Точно Волшебник)))
19 DrZombi
 
26.10.23
11:08
(0) Я вот так...

//Получить картинку по наименованию...
Функция ПолучитьИзБиблиотекиКартинку(ИмяКартинки)
    
    Попытка
        Возврат БиблиотекаКартинок[ИмяКартинки];
    Исключение
        Возврат Неопределено;
    КонецПопытки;
    
КонецФункции
20 Chessmas
 
26.10.23
12:53
Все равно проблема с всстанновлением: при загрузке сохраненной ТЗ на доске  появляются лишь фигуры в начальных позициях. Могу ли я кому-нибудь скинуть конфу с описанием чтоб разоброаться? У меня Альт Линукс...
21 Галахад
 
26.10.23
13:09
(20) Выложи куда-нибудь. Гугл, Яндекс диск и т.д. Если будут желающие, посмотрят.
22 Злопчинский
 
26.10.23
13:11
(17) выигрываешь в шахматы от NS? которые он на 7.7 написал?
23 Chessmas
 
26.10.23
13:19
https://drive.google.com/file/d/1YwHfRgn_-3UnMxZ1TS5u0SBE98x04Xdy/view?usp=sharing
В архиве файл конфигурации и файлы csv начальной позиции и записи. В процедурах СохранитьНаСерверре и ВосстановитьНаСервере надо поменять пути к папке games.
24 Chessmas
 
26.10.23
13:21
(22) Не пошли они у меня, они ж под форточки...
25 Chessmas
 
26.10.23
13:32
(23) В Документе Партии при переключении тумблера Белые/Черные расставляются фигуры на доске. Ходы в два клика по полям Откуда и Куда, потом либо кнопка "Сделать ход" либо для превращения пешки на кнопку фигуры в которую превращается вместо "Сделать ход". Рокировки только по соответствующей кнопке...

Программист разбертся, но я это описал для экономии времени...
26 Chessmas
 
26.10.23
13:50
(23) Запутался уже... Сохранение я перенес в процедуру ПослеЗаписиНаСервере
27 Donkey_hot
 
26.10.23
15:17
(23) Дался Вам этот csv. Напишите парсер FEN, потом сможете легким движением руки импортировать партии и позиции откуда угодно.
28 Chessmas
 
26.10.23
15:33
(27) Пробовал, но загвоздка с двузначным числом, доска же 10 на 10, опыта и фантазии не хватило... Пробовал пустую горизонталь обозначать как A - 10 в шестнадцатиричной системе, но не получалось...
29 Tatitutu
 
26.10.23
15:37
Самые короткие шахматы

файл ШАХМАТЫ.txt
переименовать ШАХМАТЫ.html

(или открой готовый ШАХМАТЫ_Пример.html)

и открыть в ЛЮБОМ браузере
(можно выключить интернет)

Попробуй выиграть

Спросишь в чем прикол ?

Размер файла - посмотрел ? Удивился ?

1,05 КБ (1 076 байт) !!!

Честно не знаю автора, когда нашел на просторах сети


https://clck.ru/36EMWL

CHESS.zip (2,3 БАЙТА)
30 Tatitutu
 
26.10.23
15:39
https://infostart.ru/1c/tools/154036/ вот скорее всего они
31 Волшебник
 
26.10.23
15:56
(22) Там программа делала случайные ходы
32 Donkey_hot
 
26.10.23
16:03
(28) Я не заметил, думал, речь про шахматы. Ну наверное тоже сделаете хорошее дело, если придумаете для комьюнити этой ерунды расширение нотации FEN. Если кто-то раньше не придумал.
33 Chessmas
 
26.10.23
16:04
(30) https://drive.google.com/file/d/1OZjvxr_xLN7he3ASz-k2VkyIYgAo_Dy8/view?usp=drive_link - без напряга заматовал. Не мой уровень))
34 Chessmas
 
26.10.23
16:13
(32) http://corrchess.online/rules.php#chx - вот правила игры в Шахматы-100. Если сделаю, то это будет их популяризацией. А смысла нет делать базу в 1С для классики, когда программ бесплатных навалом...
35 Chessmas
 
26.10.23
16:58
https://infostart.ru/1c/tools/1386656/ - есть конфига с сохранением на любом ходу, но не решаюсь ее покупать чтоб лишь посмотреть как реализовано сохранение, поскольку она под Windows.
https://infostart.ru/1c/reports/18951/ - эту скачивал, но она не запускается в Линуксе...
36 Donkey_hot
 
26.10.23
17:04
FEN + PGN - общепринятый стандарт, нет смысла придумывать что-то еще.
37 Chessmas
 
26.10.23
17:12
(36) Я совет у одного математика просил как расширить FEN для доски 10 на 10, у него идей не нашлось. Вот у меня тоже пока мыслей нет...
38 Donkey_hot
 
26.10.23
17:18
(37) Я, честно говоря, не понимаю, в чем трудность... 10 с 1 вы никак не перепутаете, потому что 0 в секции описания расположения фигур не используется.
39 Chessmas
 
26.10.23
17:22
(38) Смысл FEN в кодировке одним символом. А это идея кодировать 10 нулем. Спасибо, попробую
40 Donkey_hot
 
26.10.23
17:42
(39) С чего Вы взяли, что такой смысл? Но даже если и так, задействуйте шестнадцатеричную цифру "А", благо данный символ тоже нигде не используется.
41 Мимохожий Однако
 
26.10.23
18:31
(17) Почему именно на 1С8? Поудобнее ПО не оказалось под рукой?
42 Chessmas
 
26.10.23
18:46
(41) А где еще можно легко организовать хранение базы?
43 Волшебник
 
26.10.23
19:14
(42) Android+Java+SQLite, заодно шахматы будут всегда с собой
44 Chessmas
 
26.10.23
19:21
Не дружу с мобилой, не для моих рук...
45 Chessmas
 
26.10.23
23:25
Всем спасибо, все свободны!))) Я нашел решение
46 Злопчинский
 
27.10.23
00:39
(45) Сенатор Палпатин требует озвучить!
47 Chessmas
 
27.10.23
10:46
(46) Ну тупил, опыта мало... Я не учел что в 1С вывод построчный, а в ТЗ когда совершал ход строка с полем на котором стояла фигура удалялась и добавлялась в конец строка с полем на которое фигура шла. Поэтому на доску выводились лишь фигуры, которые оставались на начальных позициях. Добавил новую ТЗ и сделал ее заполнение данными из первой ТЗ и позиция выводить как надо...
48 Chessmas
 
27.10.23
14:40
(23) Только разобрался как открыть возможность скачивания на гугл-диске, раньше было открыл доступ по ссылке и все. Инноваторы блин как и в 1С, я ж несколько дней пытался сохранить ТЗ в ХЗ, но оказалось что невозможно сохранять несериализованные объекты, вот и пришел к csv...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший